diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0.sql index d6ceca98a3..c703ad31e8 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS FLOAT64) / CAST(NULLIF(subq_15.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY metric_time__day - ) subq_15 + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY metric_time__day -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0_optimized.sql index 5f49ab233c..dbb81e3827 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY metric_time__day -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0.sql index 25d0b7f850..707aee973f 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS FLOAT64) / CAST(NULLIF(subq_15.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY metric_time__day , visit__referrer_id - ) subq_15 + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index 76d15f12aa..dca4aa2343 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 7017613432..8c494ace7d 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS FLOAT64) / CAST(NULLIF(subq_14.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS FLOAT64) / CAST(NULLIF(subq_13.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > DATE_SUB(CAST(subq_9.metric_time__month AS DATETIME), INTERVAL 1 month) + subq_5.metric_time__month > DATE_SUB(CAST(subq_8.metric_time__month AS DATETIME), INTERVAL 1 month) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index 1f655b5996..a8b9c9d249 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS FLOAT64) / CAST(NULLIF(MAX(subq_18.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS FLOAT64) / CAST(NULLIF(MAX(subq_17.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > DATE_SUB(CAST(subq_23.metric_time__month AS DATETIME), INTERVAL 1 month) + sma_28019_cte.metric_time__month > DATE_SUB(CAST(subq_22.metric_time__month AS DATETIME), INTERVAL 1 month) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0.sql index 55f7b47776..6086080524 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate + CAST(subq_15.buys AS FLOAT64) / CAST(NULLIF(subq_15.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0_optimized.sql index 002eb1e98e..86032300db 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_21.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_20.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index 1bc8f522dc..2d73dfb032 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_SUB(CAST(subq_11.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_7.metric_time__day > DATE_SUB(CAST(subq_10.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index 8cdc12f00b..0a289ace93 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_SUB(CAST(subq_27.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_23.metric_time__day > DATE_SUB(CAST(subq_26.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0.sql index bb916905d7..a4c6df3d76 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS FLOAT64) / CAST(NULLIF(subq_18.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS FLOAT64) / CAST(NULLIF(subq_17.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY visit__referrer_id - ) subq_5 + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY visit__referrer_id - ) subq_17 + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY visit__referrer_id -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0_optimized.sql index c042862194..4630777b28 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY visit__referrer_id -) subq_35 +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0.sql index 33c55bafe2..a5cd45d005 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS FLOAT64) / CAST(NULLIF(subq_15.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_SUB(CAST(subq_11.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_7.metric_time__day > DATE_SUB(CAST(subq_10.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY metric_time__day - ) subq_15 + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY metric_time__day -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0_optimized.sql index 0360797a29..48079181b4 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_SUB(CAST(subq_27.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_23.metric_time__day > DATE_SUB(CAST(subq_26.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY metric_time__day -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 97d621306b..598e0050ef 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS FLOAT64) / CAST(NULLIF(subq_18.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS FLOAT64) / CAST(NULLIF(subq_17.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY metric_time__day , visit__referrer_id - ) subq_5 + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_9.metric_time__day > DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY metric_time__day , visit__referrer_id - ) subq_17 + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index f153f6be3d..1d1c29b68c 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/BigQuery/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > DATE_SUB(CAST(subq_30.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_26.metric_time__day > DATE_SUB(CAST(subq_29.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_35 +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0.sql index 34c025db74..87f172e197 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0_optimized.sql index f7d1acf844..027eed90f5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0.sql index fe3c17bdab..83509b60f1 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index ce7a5e1457..f36b313f0f 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 1cdc4a67ae..d31fc5c9f6 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > DATEADD(month, -1, subq_9.metric_time__month) + subq_5.metric_time__month > DATEADD(month, -1, subq_8.metric_time__month) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index 8ddd3d4977..66107ba693 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_23.metric_time__month) + sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_22.metric_time__month) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0.sql index 5bff067ce8..c1e0dd9cf0 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0_optimized.sql index 83d9e2816f..417902bf2b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index e4eb2648e9..7baf8a2381 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index d4252dce5d..85c511a999 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0.sql index 0a7c68bfd8..2a1d3d814b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0_optimized.sql index 67a9777bf1..bbd217f5fd 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0.sql index 92887acbc1..e54e4c9c63 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0_optimized.sql index 37588b2722..d5ca085836 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 6400dfbcbf..67f77836e5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index c0cd508b1d..f988f74881 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Databricks/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) + subq_26.metric_time__day > DATEADD(day, -7, subq_29.metric_time__day) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0.sql index adc14f0381..91b3e8e1ab 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0_optimized.sql index 86858db215..6b719f58c9 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0.sql index 369ee7144e..84988513fb 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index 27385dd742..48067d26bd 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 1547e6b865..a5fcf3ad69 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > subq_9.metric_time__month - MAKE_INTERVAL(months => 1) + subq_5.metric_time__month > subq_8.metric_time__month - MAKE_INTERVAL(months => 1) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index d139c3a04b..badf3cf9ba 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > subq_23.metric_time__month - MAKE_INTERVAL(months => 1) + sma_28019_cte.metric_time__month > subq_22.metric_time__month - MAKE_INTERVAL(months => 1) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0.sql index e942104b40..d55d347e3b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0_optimized.sql index 86e67d5fbe..dbc9dbd0d0 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index f1bb5fd5a7..f4ecde142d 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - MAKE_INTERVAL(days => 7) + subq_7.metric_time__day > subq_10.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index 35aa1ae77e..79e029b465 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - MAKE_INTERVAL(days => 7) + subq_23.metric_time__day > subq_26.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0.sql index d49a90a333..af78afe8dd 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0_optimized.sql index 7880bed3e1..fa3432cba0 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0.sql index b957ea806c..3f5f2c073c 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - MAKE_INTERVAL(days => 7) + subq_7.metric_time__day > subq_10.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0_optimized.sql index d2bc1c15e1..a2e2e22c93 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - MAKE_INTERVAL(days => 7) + subq_23.metric_time__day > subq_26.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 61a1d9f044..c88a1f7f6b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - MAKE_INTERVAL(days => 7) + subq_9.metric_time__day > subq_12.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index 7679a0373e..dba02fa558 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Postgres/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > subq_30.metric_time__day - MAKE_INTERVAL(days => 7) + subq_26.metric_time__day > subq_29.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0.sql index 2357246f16..bf5d7f0b85 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0_optimized.sql index c66b8e1b80..ca00255f45 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0.sql index 347506866b..22b5de5035 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index 87353a4100..972c0d5c9d 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 32e9b0916a..b6d2fc7d66 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > DATEADD(month, -1, subq_9.metric_time__month) + subq_5.metric_time__month > DATEADD(month, -1, subq_8.metric_time__month) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index c40790857e..d665af1ae8 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_23.metric_time__month) + sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_22.metric_time__month) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0.sql index d7891cfde4..2466263114 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0_optimized.sql index fadd9f434a..2f2463cc11 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index ff7cdd4dd9..d11bd04c53 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index 6151635527..71a3063614 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0.sql index 794440d34d..04be55e34e 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0_optimized.sql index d66923a5f1..df4d111471 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0.sql index 8b98091bd7..2a3ec000a5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0_optimized.sql index a20dea785a..6aca54499e 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0.sql index b5da2f6489..8d15d91496 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index e6fb17008e..e3845f77a1 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Redshift/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) + subq_26.metric_time__day > DATEADD(day, -7, subq_29.metric_time__day) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0.sql index 0c037cac32..9653dfdffe 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0_optimized.sql index 3e23f52de1..85a1be908b 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0.sql index 1208f676e7..ece4c44949 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index 8346a96a60..d063c8f99d 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index 3cc3af77b8..d3e353b791 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > DATEADD(month, -1, subq_9.metric_time__month) + subq_5.metric_time__month > DATEADD(month, -1, subq_8.metric_time__month) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index 21dc5936e0..f3425d6730 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_23.metric_time__month) + sma_28019_cte.metric_time__month > DATEADD(month, -1, subq_22.metric_time__month) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0.sql index e211045c34..4c6e6f59fb 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0_optimized.sql index e6573f1d0c..c96b424296 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index 62a1e00d2d..4310689f02 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index 78a3d27393..a1f2ab2b28 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0.sql index ed5b0af388..4a3439c4d9 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0_optimized.sql index ce0ceb7946..11c7568935 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0.sql index 477c8f0f6e..0bf70bc0a3 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0_optimized.sql index 3944d822f6..fee404e0e5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 67327b08ca..d910c3d8b8 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-01' AND '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index 4046f1035a..7b80ff361d 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Snowflake/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) + subq_26.metric_time__day > DATEADD(day, -7, subq_29.metric_time__day) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0.sql index f6f6dc7778..de9937ba73 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,23 +487,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0_optimized.sql index 77b875a433..dbba21e3c2 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,19 +106,19 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0.sql index d8006c423f..68e7f1bd19 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_15.metric_time__day + , subq_15.visit__referrer_id + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) AS visit__referrer_id , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,155 +162,155 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , subq_13.visit__referrer_id + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.visit__referrer_id - , subq_13.buys + subq_12.metric_time__day + , subq_12.visit__referrer_id + , subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -345,120 +345,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -504,29 +504,29 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - , subq_14.visit__referrer_id - ) subq_15 + subq_13.metric_time__day + , subq_13.visit__referrer_id + ) subq_14 ON ( - subq_4.visit__referrer_id = subq_15.visit__referrer_id + subq_4.visit__referrer_id = subq_14.visit__referrer_id ) AND ( - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day ) GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) - , COALESCE(subq_4.visit__referrer_id, subq_15.visit__referrer_id) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) + , COALESCE(subq_4.visit__referrer_id, subq_14.visit__referrer_id) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0_optimized.sql index b14f4d2b23..02a3316442 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_categorical_filter__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) AS visit__referrer_id - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) AS visit__referrer_id + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,15 +39,16 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -59,46 +60,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -109,9 +110,9 @@ FROM ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -122,25 +123,25 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day , visit__referrer_id - ) subq_31 + ) subq_30 ON ( - subq_21.visit__referrer_id = subq_31.visit__referrer_id + subq_20.visit__referrer_id = subq_30.visit__referrer_id ) AND ( - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day ) GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) - , COALESCE(subq_21.visit__referrer_id, subq_31.visit__referrer_id) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) + , COALESCE(subq_20.visit__referrer_id, subq_30.visit__referrer_id) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0.sql index f65fa2805c..9274d8cea7 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys_month AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(subq_13.buys_month AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys_month) AS buys_month + , MAX(subq_12.buys_month) AS buys_month FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys_month) AS buys_month + SUM(subq_11.buys_month) AS buys_month FROM ( -- Pass Only Elements: ['buys_month',] SELECT - subq_11.buys_month + subq_10.buys_month FROM ( -- Find conversions for user within the range of 1 month SELECT - subq_10.metric_time__month - , subq_10.user - , subq_10.buys_month - , subq_10.visits + subq_9.metric_time__month + , subq_9.user + , subq_9.buys_month + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__month) OVER ( + , FIRST_VALUE(subq_5.metric_time__month) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__month - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__month DESC + subq_8.user + , subq_8.metric_time__month + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys_month AS buys_month + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys_month AS buys_month FROM ( -- Pass Only Elements: ['visits', 'metric_time__month', 'user'] SELECT - subq_5.metric_time__month - , subq_5.user - , subq_5.visits + subq_4.metric_time__month + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,106 +230,106 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys_month + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys_month , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds_month' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds_month__month AS metric_time__month - , subq_7.ds_month__quarter AS metric_time__quarter - , subq_7.ds_month__year AS metric_time__year - , subq_7.ds_month__extract_year AS metric_time__extract_year - , subq_7.ds_month__extract_quarter AS metric_time__extract_quarter - , subq_7.ds_month__extract_month AS metric_time__extract_month - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys_month + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds_month__month AS metric_time__month + , subq_6.ds_month__quarter AS metric_time__quarter + , subq_6.ds_month__year AS metric_time__year + , subq_6.ds_month__extract_year AS metric_time__extract_year + , subq_6.ds_month__extract_quarter AS metric_time__extract_quarter + , subq_6.ds_month__extract_month AS metric_time__extract_month + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys_month FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -375,21 +375,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__month <= subq_9.metric_time__month + subq_5.metric_time__month <= subq_8.metric_time__month ) AND ( - subq_6.metric_time__month > DATE_ADD('month', -1, subq_9.metric_time__month) + subq_5.metric_time__month > DATE_ADD('month', -1, subq_8.metric_time__month) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql index c14f77c695..c476aad129 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_different_time_dimension_grains__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion + CAST(MAX(subq_26.buys_month) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_with_monthly_conversion FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 1 month -- Pass Only Elements: ['buys_month',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__month) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__month , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__month - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__month + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__month DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys_month AS buys_month + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys_month AS buys_month FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys_month , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__month <= subq_23.metric_time__month + sma_28019_cte.metric_time__month <= subq_22.metric_time__month ) AND ( - sma_28019_cte.metric_time__month > DATE_ADD('month', -1, subq_23.metric_time__month) + sma_28019_cte.metric_time__month > DATE_ADD('month', -1, subq_22.metric_time__month) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0.sql index 74d95f3d9b..e64871c998 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,141 +151,141 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -320,120 +320,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -479,17 +479,17 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_7.metric_time__day <= subq_10.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0_optimized.sql index 1b5da71060..daabbdc52f 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_31.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_21.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate + CAST(MAX(subq_30.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_20.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,11 +28,12 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys',] @@ -42,38 +43,38 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -82,9 +83,9 @@ CROSS JOIN ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -95,12 +96,12 @@ CROSS JOIN ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( - (subq_24.metric_time__day <= subq_27.metric_time__day) + (subq_23.metric_time__day <= subq_26.metric_time__day) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0.sql index f196406394..e249098067 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.buys AS visit_buy_conversions + subq_15.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_4.visits) AS visits - , COALESCE(MAX(subq_15.buys), 0) AS buys + , COALESCE(MAX(subq_14.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -151,151 +151,151 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_14.buys) AS buys + SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_13.buys + subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.visit__referrer_id - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.visit__referrer_id + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_7.visit__referrer_id) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visit__referrer_id - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visit__referrer_id + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -330,120 +330,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE visit__referrer_id = 'ref_id_01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -489,21 +489,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_ADD('day', -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATE_ADD('day', -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 - ) subq_15 -) subq_16 + ) subq_11 + ) subq_12 + ) subq_13 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql index 3ccd737504..26102d5e45 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_filter_not_in_group_by__plan0_optimized.sql @@ -18,7 +18,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_31.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_30.buys), 0) AS visit_buy_conversions FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -28,12 +28,14 @@ FROM ( FROM ( -- Read From CTE For node_id=sma_28019 SELECT - visit__referrer_id + metric_time__day + , sma_28019_cte.user + , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE visit__referrer_id = 'ref_id_01' -) subq_21 +) subq_20 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -43,46 +45,46 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_23.visit__referrer_id) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visit__referrer_id , visits FROM ( @@ -93,9 +95,9 @@ CROSS JOIN ( , visit__referrer_id , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE visit__referrer_id = 'ref_id_01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -106,16 +108,16 @@ CROSS JOIN ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_ADD('day', -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATE_ADD('day', -7, subq_26.metric_time__day) ) ) - ) subq_28 -) subq_31 + ) subq_27 +) subq_30 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0.sql index a9475d5299..354be578ab 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0.sql @@ -6,156 +6,156 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id'] SELECT - subq_3.visit__referrer_id - , subq_3.visits + subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -190,210 +190,210 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.visit__referrer_id - ) subq_5 + subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_15.visit__referrer_id - , subq_15.buys + subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -428,122 +428,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -589,23 +589,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( - (subq_10.metric_time__day <= subq_13.metric_time__day) + (subq_9.metric_time__day <= subq_12.metric_time__day) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.visit__referrer_id - ) subq_17 + subq_15.visit__referrer_id + ) subq_16 ON - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id GROUP BY - COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0_optimized.sql index 901a267bb5..369463edd5 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_time_constraint__plan0_optimized.sql @@ -24,9 +24,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -37,14 +37,16 @@ FROM ( FROM ( -- Read From CTE For node_id=ctr_0 SELECT - visit__referrer_id + metric_time__day + , ctr_0_cte.user + , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -55,46 +57,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -105,9 +107,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -118,19 +120,19 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( - (subq_27.metric_time__day <= subq_30.metric_time__day) + (subq_26.metric_time__day <= subq_29.metric_time__day) ) - ) subq_31 + ) subq_30 GROUP BY visit__referrer_id - ) subq_34 + ) subq_33 ON - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id GROUP BY - COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0.sql index aad79bfd40..a461cd3355 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -157,143 +157,143 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.buys + subq_12.metric_time__day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Constrain Output with WHERE SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.metric_time__day - , subq_6.metric_time__week - , subq_6.metric_time__month - , subq_6.metric_time__quarter - , subq_6.metric_time__year - , subq_6.metric_time__extract_year - , subq_6.metric_time__extract_quarter - , subq_6.metric_time__extract_month - , subq_6.metric_time__extract_day - , subq_6.metric_time__extract_dow - , subq_6.metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.visit__ds__day + , subq_5.visit__ds__week + , subq_5.visit__ds__month + , subq_5.visit__ds__quarter + , subq_5.visit__ds__year + , subq_5.visit__ds__extract_year + , subq_5.visit__ds__extract_quarter + , subq_5.visit__ds__extract_month + , subq_5.visit__ds__extract_day + , subq_5.visit__ds__extract_dow + , subq_5.visit__ds__extract_doy + , subq_5.metric_time__day + , subq_5.metric_time__week + , subq_5.metric_time__month + , subq_5.metric_time__quarter + , subq_5.metric_time__year + , subq_5.metric_time__extract_year + , subq_5.metric_time__extract_quarter + , subq_5.metric_time__extract_month + , subq_5.metric_time__extract_day + , subq_5.metric_time__extract_dow + , subq_5.metric_time__extract_doy + , subq_5.user + , subq_5.session + , subq_5.visit__user + , subq_5.visit__session + , subq_5.referrer_id + , subq_5.visit__referrer_id + , subq_5.visits + , subq_5.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.visit__ds__day - , subq_5.visit__ds__week - , subq_5.visit__ds__month - , subq_5.visit__ds__quarter - , subq_5.visit__ds__year - , subq_5.visit__ds__extract_year - , subq_5.visit__ds__extract_quarter - , subq_5.visit__ds__extract_month - , subq_5.visit__ds__extract_day - , subq_5.visit__ds__extract_dow - , subq_5.visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user - , subq_5.session - , subq_5.visit__user - , subq_5.visit__session - , subq_5.referrer_id - , subq_5.visit__referrer_id - , subq_5.visits - , subq_5.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -328,120 +328,120 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 WHERE metric_time__day = '2020-01-01' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -487,27 +487,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_ADD('day', -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATE_ADD('day', -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__day - ) subq_15 + subq_13.metric_time__day + ) subq_14 ON - subq_4.metric_time__day = subq_15.metric_time__day + subq_4.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_4.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0_optimized.sql index 4d19db931f..f98682a2bd 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window__plan0_optimized.sql @@ -21,9 +21,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day'] @@ -35,13 +35,14 @@ FROM ( -- Read From CTE For node_id=sma_28019 SELECT metric_time__day + , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__day'] @@ -52,38 +53,38 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_22.user + , subq_21.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -92,9 +93,9 @@ FROM ( , sma_28019_cte.user , visits FROM sma_28019_cte sma_28019_cte - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' - ) subq_24 + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -105,23 +106,23 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_ADD('day', -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATE_ADD('day', -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__day = subq_31.metric_time__day + subq_20.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_21.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_20.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0.sql index 0fd3689d2d..840e3dea8a 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0.sql @@ -6,160 +6,160 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day - , subq_18.visit__referrer_id - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__day + , subq_17.visit__referrer_id + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) AS metric_time__day - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) AS visit__referrer_id - , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) AS metric_time__day + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) AS visit__referrer_id + , MAX(subq_6.visits) AS visits + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , subq_4.visit__referrer_id - , SUM(subq_4.visits) AS visits + subq_5.metric_time__day + , subq_5.visit__referrer_id + , SUM(subq_5.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.visit__referrer_id - , subq_3.visits + subq_4.metric_time__day + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.visit__ds__day + , subq_3.visit__ds__week + , subq_3.visit__ds__month + , subq_3.visit__ds__quarter + , subq_3.visit__ds__year + , subq_3.visit__ds__extract_year + , subq_3.visit__ds__extract_quarter + , subq_3.visit__ds__extract_month + , subq_3.visit__ds__extract_day + , subq_3.visit__ds__extract_dow + , subq_3.visit__ds__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.user + , subq_3.session + , subq_3.visit__user + , subq_3.visit__session + , subq_3.referrer_id + , subq_3.visit__referrer_id + , subq_3.visits + , subq_3.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.visit__ds__day - , subq_1.visit__ds__week - , subq_1.visit__ds__month - , subq_1.visit__ds__quarter - , subq_1.visit__ds__year - , subq_1.visit__ds__extract_year - , subq_1.visit__ds__extract_quarter - , subq_1.visit__ds__extract_month - , subq_1.visit__ds__extract_day - , subq_1.visit__ds__extract_dow - , subq_1.visit__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.session - , subq_1.visit__user - , subq_1.visit__session - , subq_1.referrer_id - , subq_1.visit__referrer_id - , subq_1.visits - , subq_1.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.visit__ds__day - , subq_0.visit__ds__week - , subq_0.visit__ds__month - , subq_0.visit__ds__quarter - , subq_0.visit__ds__year - , subq_0.visit__ds__extract_year - , subq_0.visit__ds__extract_quarter - , subq_0.visit__ds__extract_month - , subq_0.visit__ds__extract_day - , subq_0.visit__ds__extract_dow - , subq_0.visit__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.session - , subq_0.visit__user - , subq_0.visit__session - , subq_0.referrer_id - , subq_0.visit__referrer_id - , subq_0.visits - , subq_0.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -194,213 +194,213 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' + ) subq_3 WHERE visit__referrer_id = 'ref_id_01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - , subq_4.visit__referrer_id - ) subq_5 + subq_5.metric_time__day + , subq_5.visit__referrer_id + ) subq_6 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , subq_16.visit__referrer_id - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , subq_15.visit__referrer_id + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.visit__referrer_id - , subq_15.buys + subq_14.metric_time__day + , subq_14.visit__referrer_id + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.visit__referrer_id - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.visit__referrer_id + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_9.visit__referrer_id) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visit__referrer_id - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visit__referrer_id + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-02T00:00:00] SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.visit__ds__day - , subq_7.visit__ds__week - , subq_7.visit__ds__month - , subq_7.visit__ds__quarter - , subq_7.visit__ds__year - , subq_7.visit__ds__extract_year - , subq_7.visit__ds__extract_quarter - , subq_7.visit__ds__extract_month - , subq_7.visit__ds__extract_day - , subq_7.visit__ds__extract_dow - , subq_7.visit__ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.user - , subq_7.session - , subq_7.visit__user - , subq_7.visit__session - , subq_7.referrer_id - , subq_7.visit__referrer_id - , subq_7.visits - , subq_7.visitors + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.visit__ds__day + , subq_2.visit__ds__week + , subq_2.visit__ds__month + , subq_2.visit__ds__quarter + , subq_2.visit__ds__year + , subq_2.visit__ds__extract_year + , subq_2.visit__ds__extract_quarter + , subq_2.visit__ds__extract_month + , subq_2.visit__ds__extract_day + , subq_2.visit__ds__extract_dow + , subq_2.visit__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.session + , subq_2.visit__user + , subq_2.visit__session + , subq_2.referrer_id + , subq_2.visit__referrer_id + , subq_2.visits + , subq_2.visitors FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.visit__ds__day + , subq_1.visit__ds__week + , subq_1.visit__ds__month + , subq_1.visit__ds__quarter + , subq_1.visit__ds__year + , subq_1.visit__ds__extract_year + , subq_1.visit__ds__extract_quarter + , subq_1.visit__ds__extract_month + , subq_1.visit__ds__extract_day + , subq_1.visit__ds__extract_dow + , subq_1.visit__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.session + , subq_1.visit__user + , subq_1.visit__session + , subq_1.referrer_id + , subq_1.visit__referrer_id + , subq_1.visits + , subq_1.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -435,122 +435,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - WHERE subq_7.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' - ) subq_8 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-02' + ) subq_7 WHERE visit__referrer_id = 'ref_id_01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -596,33 +596,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_ADD('day', -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATE_ADD('day', -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - , subq_16.visit__referrer_id - ) subq_17 + subq_15.metric_time__day + , subq_15.visit__referrer_id + ) subq_16 ON ( - subq_5.visit__referrer_id = subq_17.visit__referrer_id + subq_6.visit__referrer_id = subq_16.visit__referrer_id ) AND ( - subq_5.metric_time__day = subq_17.metric_time__day + subq_6.metric_time__day = subq_16.metric_time__day ) GROUP BY - COALESCE(subq_5.metric_time__day, subq_17.metric_time__day) - , COALESCE(subq_5.visit__referrer_id, subq_17.visit__referrer_id) -) subq_18 + COALESCE(subq_6.metric_time__day, subq_16.metric_time__day) + , COALESCE(subq_6.visit__referrer_id, subq_16.visit__referrer_id) +) subq_17 diff --git a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql index 77645e67c3..cae318801e 100644 --- a/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metric_rendering.py/SqlPlan/Trino/test_conversion_metric_with_window_and_time_constraint__plan0_optimized.sql @@ -25,10 +25,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) AS metric_time__day - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) AS visit__referrer_id - , MAX(subq_24.visits) AS visits - , MAX(subq_34.buys) AS buys + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) AS metric_time__day + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) AS visit__referrer_id + , MAX(subq_23.visits) AS visits + , MAX(subq_33.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -41,15 +41,16 @@ FROM ( -- Read From CTE For node_id=ctr_0 SELECT metric_time__day + , ctr_0_cte.user , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_21 + ) subq_20 WHERE visit__referrer_id = 'ref_id_01' GROUP BY metric_time__day , visit__referrer_id - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -61,46 +62,46 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_27.visits) OVER ( + FIRST_VALUE(subq_26.visits) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_27.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_26.visit__referrer_id) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_27.metric_time__day) OVER ( + , FIRST_VALUE(subq_26.metric_time__day) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_27.user) OVER ( + , FIRST_VALUE(subq_26.user) OVER ( PARTITION BY - subq_30.user - , subq_30.metric_time__day - , subq_30.mf_internal_uuid - ORDER BY subq_27.metric_time__day DESC + subq_29.user + , subq_29.metric_time__day + , subq_29.mf_internal_uuid + ORDER BY subq_26.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_30.mf_internal_uuid AS mf_internal_uuid - , subq_30.buys AS buys + , subq_29.mf_internal_uuid AS mf_internal_uuid + , subq_29.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT metric_time__day - , subq_25.user + , subq_24.user , visit__referrer_id , visits FROM ( @@ -111,9 +112,9 @@ FROM ( , visit__referrer_id , visits FROM ctr_0_cte ctr_0_cte - ) subq_25 + ) subq_24 WHERE visit__referrer_id = 'ref_id_01' - ) subq_27 + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -124,29 +125,29 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_30 + ) subq_29 ON ( - subq_27.user = subq_30.user + subq_26.user = subq_29.user ) AND ( ( - subq_27.metric_time__day <= subq_30.metric_time__day + subq_26.metric_time__day <= subq_29.metric_time__day ) AND ( - subq_27.metric_time__day > DATE_ADD('day', -7, subq_30.metric_time__day) + subq_26.metric_time__day > DATE_ADD('day', -7, subq_29.metric_time__day) ) ) - ) subq_31 + ) subq_30 GROUP BY metric_time__day , visit__referrer_id - ) subq_34 + ) subq_33 ON ( - subq_24.visit__referrer_id = subq_34.visit__referrer_id + subq_23.visit__referrer_id = subq_33.visit__referrer_id ) AND ( - subq_24.metric_time__day = subq_34.metric_time__day + subq_23.metric_time__day = subq_33.metric_time__day ) GROUP BY - COALESCE(subq_24.metric_time__day, subq_34.metric_time__day) - , COALESCE(subq_24.visit__referrer_id, subq_34.visit__referrer_id) -) subq_35 + COALESCE(subq_23.metric_time__day, subq_33.metric_time__day) + , COALESCE(subq_23.visit__referrer_id, subq_33.visit__referrer_id) +) subq_34 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql index 55535575ea..aed553d242 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_5.metric_time__day > DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql index 2949bf60c4..9b54e1c969 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_23.metric_time__day AS DATETIME), INTERVAL 7 day) + sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_22.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index a61539bd22..c76674fbe9 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS FLOAT64) / CAST(NULLIF(subq_22.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS FLOAT64) / CAST(NULLIF(subq_21.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_9.metric_time__day > DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY metric_time__day - ) subq_17 + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY metric_time__day -) subq_22 +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index d337455f10..b788ffa40f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_35.metric_time__day AS DATETIME), INTERVAL 7 day) + sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_34.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY metric_time__day -) subq_44 +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0.sql index f1644b54ce..2d536eef69 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS FLOAT64) / CAST(NULLIF(subq_14.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS FLOAT64) / CAST(NULLIF(subq_13.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY visit__referrer_id - ) subq_13 + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY visit__referrer_id -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0_optimized.sql index 26e66edddf..e0f360017a 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY visit__referrer_id -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql index a83d2df7ae..2d6dc8ea04 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS FLOAT64) / CAST(NULLIF(subq_14.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS FLOAT64) / CAST(NULLIF(subq_13.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_5.metric_time__day > DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY metric_time__day , visit__referrer_id - ) subq_13 + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql index 3d75853ab1..673e6ab05a 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_23.metric_time__day AS DATETIME), INTERVAL 7 day) + sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_22.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql index c963dc5818..5ed8337522 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS FLOAT64) / CAST(NULLIF(subq_14.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS FLOAT64) / CAST(NULLIF(subq_13.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_5.metric_time__day > DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql index 364279bcbf..a830385d9d 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_18.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_17.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_23.metric_time__day AS DATETIME), INTERVAL 7 day) + sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_22.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0.sql index 7e26db6371..819b8baba5 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS FLOAT64) / CAST(NULLIF(subq_14.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS FLOAT64) / CAST(NULLIF(subq_13.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_5.metric_time__day > DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY metric_time__day , visit__referrer_id - ) subq_13 + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql index b9a83bb9d9..520991bdab 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/BigQuery/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_23.metric_time__day AS DATETIME), INTERVAL 7 day) + sma_28019_cte.metric_time__day > DATE_SUB(CAST(subq_22.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY metric_time__day , visit__referrer_id -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql index a8332a448f..6eb0fe68b7 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql index b98570fe01..504ef7f65a 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 6cad57ff60..9c97dae1f2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index 09a99150ad..4688e6b4c3 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_35.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_34.metric_time__day) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0.sql index e24d510c95..4b232b390c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0_optimized.sql index 673f1c5940..c754a0b0e9 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql index c69c8f8d3f..d08519d9a8 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql index f548e1c25a..c39a4c1ced 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql index c8d1494b52..a69019c81a 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql index 3092aba633..ffe878a70f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0.sql index 59257d02ea..2784977edd 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql index b3a2f09e0a..50ff4b12e2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Databricks/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql index 04988a0fb2..1f72c926d8 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - MAKE_INTERVAL(days => 7) + subq_5.metric_time__day > subq_8.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql index a116b7c877..f97ed3d636 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - MAKE_INTERVAL(days => 7) + sma_28019_cte.metric_time__day > subq_22.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 2a4b650fbc..0fefa0c916 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - MAKE_INTERVAL(days => 7) + subq_9.metric_time__day > subq_12.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index a89d4f5762..56df33c23a 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_35.metric_time__day - MAKE_INTERVAL(days => 7) + sma_28019_cte.metric_time__day > subq_34.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0.sql index 8c539e50d5..1f5270db5d 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0_optimized.sql index 803bd0f363..208255a2d2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql index 434bf13e00..1b49d44174 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - MAKE_INTERVAL(days => 7) + subq_5.metric_time__day > subq_8.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql index 109d592bd8..e619cf26a1 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - MAKE_INTERVAL(days => 7) + sma_28019_cte.metric_time__day > subq_22.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql index f2c39470c9..6ffed36c43 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - MAKE_INTERVAL(days => 7) + subq_5.metric_time__day > subq_8.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql index 63e7d4caf6..58b5c6fe5c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - MAKE_INTERVAL(days => 7) + sma_28019_cte.metric_time__day > subq_22.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0.sql index a1a8d909ff..37efceb0f0 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > subq_9.metric_time__day - MAKE_INTERVAL(days => 7) + subq_5.metric_time__day > subq_8.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql index 6e11ad3d45..a74fb3aaf4 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Postgres/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > subq_23.metric_time__day - MAKE_INTERVAL(days => 7) + sma_28019_cte.metric_time__day > subq_22.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql index 4f08ca5319..1ba8c1ef9d 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql index 5dd3f9150c..f9a4cc2971 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 88bdf8dede..6efa30a4f5 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index 2a00c0c434..2ec0cd418f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_35.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_34.metric_time__day) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0.sql index 51034a9a59..57f746d04c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0_optimized.sql index 2700910c75..f6a13004cd 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql index c001df6872..61d4224381 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql index 9d324727cf..ca4d9eabc3 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql index 2dc3429521..e8d6deb0bb 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql index 029a4cdd10..c3fa74c99d 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0.sql index 881d9bd525..141e5f0654 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql index ab41c8632d..c4d780a87c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Redshift/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql index 37abc12cfe..4521a5c225 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql index cb66b10ff1..b07759a998 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 6966b1ea30..ebe036c4f2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index 08c910d3db..2c7a665ace 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_35.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_34.metric_time__day) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0.sql index e30ab9fb89..df0c9b892c 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0_optimized.sql index a2bf58fc4f..f486f3d9ba 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql index c47ba608d4..2a16c85558 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql index 8c7b493ad7..12d9a0646f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql index 04fa9511c1..486a3872f9 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql index f6cea61c4f..178fcf9c55 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0.sql index 47b6bebf5a..1d1cd48918 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATEADD(day, -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATEADD(day, -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql index 11b8ede2a7..04605403c2 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Snowflake/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATEADD(day, -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql index d29dc11cb0..56466faa81 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.buys AS visit_buy_conversions + subq_13.buys AS visit_buy_conversions FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , COALESCE(MAX(subq_13.buys), 0) AS buys + , COALESCE(MAX(subq_12.buys), 0) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_ADD('day', -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATE_ADD('day', -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql index f829f4ca3d..de5f6f1533 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_count_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - COALESCE(MAX(subq_27.buys), 0) AS visit_buy_conversions + COALESCE(MAX(subq_26.buys), 0) AS visit_buy_conversions FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql index 86ecc444c0..12a2776f5f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day - , CAST(subq_22.buys AS DOUBLE) / CAST(NULLIF(subq_22.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 + subq_21.metric_time__day + , CAST(subq_21.buys AS DOUBLE) / CAST(NULLIF(subq_21.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days_fill_nulls_with_0 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) AS metric_time__day + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_7.visits), 0) AS visits - , COALESCE(MAX(subq_21.buys), 0) AS buys + , COALESCE(MAX(subq_20.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT @@ -157,27 +157,27 @@ FROM ( FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT - subq_20.metric_time__day AS metric_time__day - , subq_17.buys AS buys + subq_19.metric_time__day AS metric_time__day + , subq_16.buys AS buys FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_19.metric_time__day + subq_18.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_18.ds__day AS metric_time__day - , subq_18.ds__week - , subq_18.ds__month - , subq_18.ds__quarter - , subq_18.ds__year - , subq_18.ds__extract_year - , subq_18.ds__extract_quarter - , subq_18.ds__extract_month - , subq_18.ds__extract_day - , subq_18.ds__extract_dow - , subq_18.ds__extract_doy - , subq_18.ds__martian_day + subq_17.ds__day AS metric_time__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -194,105 +194,105 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_18 - ) subq_19 - ) subq_20 + ) subq_17 + ) subq_18 + ) subq_19 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__day'] SELECT - subq_15.metric_time__day - , subq_15.buys + subq_14.metric_time__day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.ds__day AS metric_time__day - , subq_8.ds__week AS metric_time__week - , subq_8.ds__month AS metric_time__month - , subq_8.ds__quarter AS metric_time__quarter - , subq_8.ds__year AS metric_time__year - , subq_8.ds__extract_year AS metric_time__extract_year - , subq_8.ds__extract_quarter AS metric_time__extract_quarter - , subq_8.ds__extract_month AS metric_time__extract_month - , subq_8.ds__extract_day AS metric_time__extract_day - , subq_8.ds__extract_dow AS metric_time__extract_dow - , subq_8.ds__extract_doy AS metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -327,118 +327,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -484,30 +484,30 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_ADD('day', -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATE_ADD('day', -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__day - ) subq_17 + subq_15.metric_time__day + ) subq_16 ON - subq_20.metric_time__day = subq_17.metric_time__day - ) subq_21 + subq_19.metric_time__day = subq_16.metric_time__day + ) subq_20 ON - subq_7.metric_time__day = subq_21.metric_time__day + subq_7.metric_time__day = subq_20.metric_time__day GROUP BY - COALESCE(subq_7.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_7.metric_time__day, subq_20.metric_time__day) +) subq_21 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql index 7221a05c1e..ffb45bf38f 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_metric_join_to_timespine_and_fill_nulls_with_0__plan0_optimized.sql @@ -28,14 +28,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_30.visits), 0) AS visits - , COALESCE(MAX(subq_43.buys), 0) AS buys + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_29.visits), 0) AS visits + , COALESCE(MAX(subq_42.buys), 0) AS buys FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_26.visits AS visits + , subq_25.visits AS visits FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28019 @@ -47,15 +47,15 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY metric_time__day - ) subq_26 + ) subq_25 ON - rss_28018_cte.ds__day = subq_26.metric_time__day - ) subq_30 + rss_28018_cte.ds__day = subq_25.metric_time__day + ) subq_29 FULL OUTER JOIN ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_39.buys AS buys + , subq_38.buys AS buys FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Find conversions for user within the range of 7 day @@ -69,30 +69,30 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_35.user - , subq_35.metric_time__day - , subq_35.mf_internal_uuid + subq_34.user + , subq_34.metric_time__day + , subq_34.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_35.mf_internal_uuid AS mf_internal_uuid - , subq_35.buys AS buys + , subq_34.mf_internal_uuid AS mf_internal_uuid + , subq_34.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -104,26 +104,26 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_35 + ) subq_34 ON ( - sma_28019_cte.user = subq_35.user + sma_28019_cte.user = subq_34.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_35.metric_time__day + sma_28019_cte.metric_time__day <= subq_34.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_35.metric_time__day) + sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_34.metric_time__day) ) ) - ) subq_36 + ) subq_35 GROUP BY metric_time__day - ) subq_39 + ) subq_38 ON - rss_28018_cte.ds__day = subq_39.metric_time__day - ) subq_43 + rss_28018_cte.ds__day = subq_38.metric_time__day + ) subq_42 ON - subq_30.metric_time__day = subq_43.metric_time__day + subq_29.metric_time__day = subq_42.metric_time__day GROUP BY - COALESCE(subq_30.metric_time__day, subq_43.metric_time__day) -) subq_44 + COALESCE(subq_29.metric_time__day, subq_42.metric_time__day) +) subq_43 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0.sql index b533ef11d5..4f4ad03966 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate + subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -111,109 +111,109 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id'] SELECT - subq_11.visit__referrer_id - , subq_11.buys + subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -248,118 +248,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -405,23 +405,23 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - (subq_6.metric_time__day <= subq_9.metric_time__day) + (subq_5.metric_time__day <= subq_8.metric_time__day) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.visit__referrer_id - ) subq_13 + subq_11.visit__referrer_id + ) subq_12 ON - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id GROUP BY - COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0_optimized.sql index ce39c30a21..80a2656755 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id'] @@ -35,7 +35,7 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'visit__referrer_id'] @@ -48,38 +48,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -91,19 +91,19 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_23.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_22.metric_time__day) ) - ) subq_24 + ) subq_23 GROUP BY visit__referrer_id - ) subq_27 + ) subq_26 ON - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id GROUP BY - COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql index e1f6d601ae..d4b0e749e5 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_by_session FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,126 +116,126 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.session - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.session + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , FIRST_VALUE(subq_6.session) OVER ( + , FIRST_VALUE(subq_5.session) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - , subq_9.session_id - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + , subq_8.session_id + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user', 'session'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.session - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.session + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -270,118 +270,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -427,35 +427,35 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( - subq_6.session = subq_9.session_id + subq_5.session = subq_8.session_id ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_ADD('day', -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATE_ADD('day', -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql index 772aef9801..b647754957 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_constant_properties__plan0_optimized.sql @@ -24,10 +24,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -40,7 +40,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -54,51 +54,51 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user , FIRST_VALUE(sma_28019_cte.session) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid - , subq_23.session_id + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + , subq_22.session_id ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS session - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -111,31 +111,31 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( - sma_28019_cte.session = subq_23.session_id + sma_28019_cte.session = subq_22.session_id ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql index cea46012d2..0aa11375b6 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0.sql @@ -6,12 +6,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -105,97 +105,97 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_12.buys) AS buys + SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_11.buys + subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -230,118 +230,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -387,21 +387,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_ADD('day', -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATE_ADD('day', -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 - ) subq_13 -) subq_14 + ) subq_9 + ) subq_10 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql index 78b24a0a86..ccf6bb7eb0 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_no_group_by__plan0_optimized.sql @@ -17,7 +17,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_27.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_18.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_26.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_17.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits',] @@ -25,7 +25,7 @@ FROM ( SELECT SUM(visits) AS visits FROM sma_28019_cte sma_28019_cte -) subq_18 +) subq_17 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -37,30 +37,30 @@ CROSS JOIN ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -72,16 +72,16 @@ CROSS JOIN ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_22.metric_time__day) ) ) - ) subq_24 -) subq_27 + ) subq_23 +) subq_26 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0.sql index e1fb36ffa5..a93e0ac6dc 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.visit__referrer_id - , CAST(subq_14.buys AS DOUBLE) / CAST(NULLIF(subq_14.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_13.metric_time__day + , subq_13.visit__referrer_id + , CAST(subq_13.buys AS DOUBLE) / CAST(NULLIF(subq_13.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) AS visit__referrer_id + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) AS visit__referrer_id , MAX(subq_3.visits) AS visits - , MAX(subq_13.buys) AS buys + , MAX(subq_12.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -116,111 +116,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , subq_12.visit__referrer_id - , SUM(subq_12.buys) AS buys + subq_11.metric_time__day + , subq_11.visit__referrer_id + , SUM(subq_11.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.visit__referrer_id - , subq_11.buys + subq_10.metric_time__day + , subq_10.visit__referrer_id + , subq_10.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_10.metric_time__day - , subq_10.user - , subq_10.visit__referrer_id - , subq_10.buys - , subq_10.visits + subq_9.metric_time__day + , subq_9.user + , subq_9.visit__referrer_id + , subq_9.buys + , subq_9.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_6.visits) OVER ( + FIRST_VALUE(subq_5.visits) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_6.visit__referrer_id) OVER ( + , FIRST_VALUE(subq_5.visit__referrer_id) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id - , FIRST_VALUE(subq_6.metric_time__day) OVER ( + , FIRST_VALUE(subq_5.metric_time__day) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_6.user) OVER ( + , FIRST_VALUE(subq_5.user) OVER ( PARTITION BY - subq_9.user - , subq_9.metric_time__day - , subq_9.mf_internal_uuid - ORDER BY subq_6.metric_time__day DESC + subq_8.user + , subq_8.metric_time__day + , subq_8.mf_internal_uuid + ORDER BY subq_5.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_9.mf_internal_uuid AS mf_internal_uuid - , subq_9.buys AS buys + , subq_8.mf_internal_uuid AS mf_internal_uuid + , subq_8.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day', 'user'] SELECT - subq_5.metric_time__day - , subq_5.user - , subq_5.visit__referrer_id - , subq_5.visits + subq_4.metric_time__day + , subq_4.user + , subq_4.visit__referrer_id + , subq_4.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.visit__ds__day - , subq_4.visit__ds__week - , subq_4.visit__ds__month - , subq_4.visit__ds__quarter - , subq_4.visit__ds__year - , subq_4.visit__ds__extract_year - , subq_4.visit__ds__extract_quarter - , subq_4.visit__ds__extract_month - , subq_4.visit__ds__extract_day - , subq_4.visit__ds__extract_dow - , subq_4.visit__ds__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.session - , subq_4.visit__user - , subq_4.visit__session - , subq_4.referrer_id - , subq_4.visit__referrer_id - , subq_4.visits - , subq_4.visitors + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.visit__ds__day + , subq_0.visit__ds__week + , subq_0.visit__ds__month + , subq_0.visit__ds__quarter + , subq_0.visit__ds__year + , subq_0.visit__ds__extract_year + , subq_0.visit__ds__extract_quarter + , subq_0.visit__ds__extract_month + , subq_0.visit__ds__extract_day + , subq_0.visit__ds__extract_dow + , subq_0.visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user + , subq_0.session + , subq_0.visit__user + , subq_0.visit__session + , subq_0.referrer_id + , subq_0.visit__referrer_id + , subq_0.visits + , subq_0.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -255,118 +255,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_4 + ) subq_5 INNER JOIN ( -- Add column with generated UUID SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_month__month - , subq_8.ds_month__quarter - , subq_8.ds_month__year - , subq_8.ds_month__extract_year - , subq_8.ds_month__extract_quarter - , subq_8.ds_month__extract_month - , subq_8.buy__ds__day - , subq_8.buy__ds__week - , subq_8.buy__ds__month - , subq_8.buy__ds__quarter - , subq_8.buy__ds__year - , subq_8.buy__ds__extract_year - , subq_8.buy__ds__extract_quarter - , subq_8.buy__ds__extract_month - , subq_8.buy__ds__extract_day - , subq_8.buy__ds__extract_dow - , subq_8.buy__ds__extract_doy - , subq_8.buy__ds_month__month - , subq_8.buy__ds_month__quarter - , subq_8.buy__ds_month__year - , subq_8.buy__ds_month__extract_year - , subq_8.buy__ds_month__extract_quarter - , subq_8.buy__ds_month__extract_month - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session_id - , subq_8.buy__user - , subq_8.buy__session_id - , subq_8.buys - , subq_8.buyers + subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds_month__month + , subq_7.ds_month__quarter + , subq_7.ds_month__year + , subq_7.ds_month__extract_year + , subq_7.ds_month__extract_quarter + , subq_7.ds_month__extract_month + , subq_7.buy__ds__day + , subq_7.buy__ds__week + , subq_7.buy__ds__month + , subq_7.buy__ds__quarter + , subq_7.buy__ds__year + , subq_7.buy__ds__extract_year + , subq_7.buy__ds__extract_quarter + , subq_7.buy__ds__extract_month + , subq_7.buy__ds__extract_day + , subq_7.buy__ds__extract_dow + , subq_7.buy__ds__extract_doy + , subq_7.buy__ds_month__month + , subq_7.buy__ds_month__quarter + , subq_7.buy__ds_month__year + , subq_7.buy__ds_month__extract_year + , subq_7.buy__ds_month__extract_quarter + , subq_7.buy__ds_month__extract_month + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session_id + , subq_7.buy__user + , subq_7.buy__session_id + , subq_7.buys + , subq_7.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_month__month - , subq_7.ds_month__quarter - , subq_7.ds_month__year - , subq_7.ds_month__extract_year - , subq_7.ds_month__extract_quarter - , subq_7.ds_month__extract_month - , subq_7.buy__ds__day - , subq_7.buy__ds__week - , subq_7.buy__ds__month - , subq_7.buy__ds__quarter - , subq_7.buy__ds__year - , subq_7.buy__ds__extract_year - , subq_7.buy__ds__extract_quarter - , subq_7.buy__ds__extract_month - , subq_7.buy__ds__extract_day - , subq_7.buy__ds__extract_dow - , subq_7.buy__ds__extract_doy - , subq_7.buy__ds_month__month - , subq_7.buy__ds_month__quarter - , subq_7.buy__ds_month__year - , subq_7.buy__ds_month__extract_year - , subq_7.buy__ds_month__extract_quarter - , subq_7.buy__ds_month__extract_month - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.user - , subq_7.session_id - , subq_7.buy__user - , subq_7.buy__session_id - , subq_7.buys - , subq_7.buyers + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds_month__month + , subq_6.ds_month__quarter + , subq_6.ds_month__year + , subq_6.ds_month__extract_year + , subq_6.ds_month__extract_quarter + , subq_6.ds_month__extract_month + , subq_6.buy__ds__day + , subq_6.buy__ds__week + , subq_6.buy__ds__month + , subq_6.buy__ds__quarter + , subq_6.buy__ds__year + , subq_6.buy__ds__extract_year + , subq_6.buy__ds__extract_quarter + , subq_6.buy__ds__extract_month + , subq_6.buy__ds__extract_day + , subq_6.buy__ds__extract_dow + , subq_6.buy__ds__extract_doy + , subq_6.buy__ds_month__month + , subq_6.buy__ds_month__quarter + , subq_6.buy__ds_month__year + , subq_6.buy__ds_month__extract_year + , subq_6.buy__ds_month__extract_quarter + , subq_6.buy__ds_month__extract_month + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.user + , subq_6.session_id + , subq_6.buy__user + , subq_6.buy__session_id + , subq_6.buys + , subq_6.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -412,33 +412,33 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 ON ( - subq_6.user = subq_9.user + subq_5.user = subq_8.user ) AND ( ( - subq_6.metric_time__day <= subq_9.metric_time__day + subq_5.metric_time__day <= subq_8.metric_time__day ) AND ( - subq_6.metric_time__day > DATE_ADD('day', -7, subq_9.metric_time__day) + subq_5.metric_time__day > DATE_ADD('day', -7, subq_8.metric_time__day) ) ) - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_9 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - , subq_12.visit__referrer_id - ) subq_13 + subq_11.metric_time__day + , subq_11.visit__referrer_id + ) subq_12 ON ( - subq_3.visit__referrer_id = subq_13.visit__referrer_id + subq_3.visit__referrer_id = subq_12.visit__referrer_id ) AND ( - subq_3.metric_time__day = subq_13.metric_time__day + subq_3.metric_time__day = subq_12.metric_time__day ) GROUP BY - COALESCE(subq_3.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_3.visit__referrer_id, subq_13.visit__referrer_id) -) subq_14 + COALESCE(subq_3.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_3.visit__referrer_id, subq_12.visit__referrer_id) +) subq_13 diff --git a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql index 06aaa63ab6..249fb8be8b 100644 --- a/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_conversion_metrics_to_sql.py/SqlPlan/Trino/test_conversion_rate_with_window__plan0_optimized.sql @@ -23,10 +23,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) AS visit__referrer_id - , MAX(subq_18.visits) AS visits - , MAX(subq_27.buys) AS buys + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) AS visit__referrer_id + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'visit__referrer_id', 'metric_time__day'] @@ -39,7 +39,7 @@ FROM ( GROUP BY metric_time__day , visit__referrer_id - ) subq_18 + ) subq_17 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'visit__referrer_id', 'metric_time__day'] @@ -53,38 +53,38 @@ FROM ( SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.visit__referrer_id) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visit__referrer_id , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_23.user - , subq_23.metric_time__day - , subq_23.mf_internal_uuid + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_23.mf_internal_uuid AS mf_internal_uuid - , subq_23.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -96,29 +96,29 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_23 + ) subq_22 ON ( - sma_28019_cte.user = subq_23.user + sma_28019_cte.user = subq_22.user ) AND ( ( - sma_28019_cte.metric_time__day <= subq_23.metric_time__day + sma_28019_cte.metric_time__day <= subq_22.metric_time__day ) AND ( - sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_23.metric_time__day) + sma_28019_cte.metric_time__day > DATE_ADD('day', -7, subq_22.metric_time__day) ) ) - ) subq_24 + ) subq_23 GROUP BY metric_time__day , visit__referrer_id - ) subq_27 + ) subq_26 ON ( - subq_18.visit__referrer_id = subq_27.visit__referrer_id + subq_17.visit__referrer_id = subq_26.visit__referrer_id ) AND ( - subq_18.metric_time__day = subq_27.metric_time__day + subq_17.metric_time__day = subq_26.metric_time__day ) GROUP BY - COALESCE(subq_18.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_18.visit__referrer_id, subq_27.visit__referrer_id) -) subq_28 + COALESCE(subq_17.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_17.visit__referrer_id, subq_26.visit__referrer_id) +) subq_27 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index aa659a11a3..bd95b4c924 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY metric_time__day -) subq_8 +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index 7fbf13feaf..88e07dfdcc 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: BigQuery -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATETIME_TRUNC(created_at, day) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql index dca2bacf04..8f8ad672c6 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > DATE_SUB(CAST(subq_3.metric_time__day AS DATETIME), INTERVAL 2 month) + subq_3.metric_time__day > DATE_SUB(CAST(subq_4.metric_time__day AS DATETIME), INTERVAL 2 month) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY metric_time__day -) subq_8 +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index 449bc2c6e6..6aa29d3409 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/BigQuery/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: BigQuery -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATETIME_TRUNC(created_at, day) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 2 month) + subq_12.metric_time__day > DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 2 month) ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index f636f0a713..2b8956682f 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index f48aed7640..e04a58320c 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: Databricks -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql index ba42b59e5d..a930e46177 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > DATEADD(month, -2, subq_3.metric_time__day) + subq_3.metric_time__day > DATEADD(month, -2, subq_4.metric_time__day) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index 2f6aafccfc..dd701214f8 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Databricks/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: Databricks -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > DATEADD(month, -2, subq_12.metric_time__day) + subq_12.metric_time__day > DATEADD(month, -2, subq_13.metric_time__day) ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index 7b4b945d73..0dffaf01f0 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index d6236ab59a..aa61878451 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: Postgres -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql index 0232586463..9aeacd213b 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > subq_3.metric_time__day - MAKE_INTERVAL(months => 2) + subq_3.metric_time__day > subq_4.metric_time__day - MAKE_INTERVAL(months => 2) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index f7f9b792a0..761d0d8c7f 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Postgres/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: Postgres -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > subq_12.metric_time__day - MAKE_INTERVAL(months => 2) + subq_12.metric_time__day > subq_13.metric_time__day - MAKE_INTERVAL(months => 2) ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index 9eef0e62d1..921be9ae3f 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index ec6d463cf5..de873150ea 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: Redshift -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql index 3668994a81..4bbd3f0f10 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > DATEADD(month, -2, subq_3.metric_time__day) + subq_3.metric_time__day > DATEADD(month, -2, subq_4.metric_time__day) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index a46b9931cd..0fbaf57ed7 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Redshift/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: Redshift -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > DATEADD(month, -2, subq_12.metric_time__day) + subq_12.metric_time__day > DATEADD(month, -2, subq_13.metric_time__day) ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index 9516d0fce4..c6adc16e0e 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2000-01-01' AND '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index 1b27d3b76d..ce69260cad 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: Snowflake -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2000-01-01' AND '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql index f54da329b8..10f976efd0 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2019-11-01' AND '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > DATEADD(month, -2, subq_3.metric_time__day) + subq_3.metric_time__day > DATEADD(month, -2, subq_4.metric_time__day) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index 4a1ee558a4..29505adde9 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Snowflake/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: Snowflake -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN '2020-01-01' AND '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN '2019-11-01' AND '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > DATEADD(month, -2, subq_12.metric_time__day) + subq_12.metric_time__day > DATEADD(month, -2, subq_13.metric_time__day) ) -WHERE subq_12.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN '2020-01-01' AND '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql index f10a609baa..4d19fe7082 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0.sql @@ -6,181 +6,181 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS revenue_all_time + subq_9.metric_time__day + , subq_9.txn_revenue AS revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2000-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -210,16 +210,16 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN timestamp '2000-01-01' AND timestamp '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2000-01-01' AND timestamp '2020-01-01' + ) subq_3 ON - (subq_2.metric_time__day <= subq_3.metric_time__day) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' - ) subq_6 - ) subq_7 + (subq_3.metric_time__day <= subq_4.metric_time__day) + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql index 391b09c435..f7afbce83b 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_no_window_with_time_constraint__plan0_optimized.sql @@ -10,15 +10,15 @@ sql_engine: Trino -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS revenue_all_time + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS revenue_all_time FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -28,9 +28,9 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN timestamp '2000-01-01' AND timestamp '2020-01-01' -) subq_11 +) subq_12 ON - (subq_11.metric_time__day <= subq_12.metric_time__day) -WHERE subq_12.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' + (subq_12.metric_time__day <= subq_13.metric_time__day) +WHERE subq_13.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql index b91c53564d..3d8d7adf94 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0.sql @@ -10,181 +10,181 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.txn_revenue AS trailing_2_months_revenue + subq_9.metric_time__day + , subq_9.txn_revenue AS trailing_2_months_revenue FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.txn_revenue) AS txn_revenue + subq_8.metric_time__day + , SUM(subq_8.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.txn_revenue + subq_7.metric_time__day + , subq_7.txn_revenue FROM ( -- Constrain Time Range to [2020-01-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.revenue_instance__ds__day - , subq_5.revenue_instance__ds__week - , subq_5.revenue_instance__ds__month - , subq_5.revenue_instance__ds__quarter - , subq_5.revenue_instance__ds__year - , subq_5.revenue_instance__ds__extract_year - , subq_5.revenue_instance__ds__extract_quarter - , subq_5.revenue_instance__ds__extract_month - , subq_5.revenue_instance__ds__extract_day - , subq_5.revenue_instance__ds__extract_dow - , subq_5.revenue_instance__ds__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.revenue_instance__user - , subq_5.txn_revenue + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.revenue_instance__ds__day + , subq_6.revenue_instance__ds__week + , subq_6.revenue_instance__ds__month + , subq_6.revenue_instance__ds__quarter + , subq_6.revenue_instance__ds__year + , subq_6.revenue_instance__ds__extract_year + , subq_6.revenue_instance__ds__extract_quarter + , subq_6.revenue_instance__ds__extract_month + , subq_6.revenue_instance__ds__extract_day + , subq_6.revenue_instance__ds__extract_dow + , subq_6.revenue_instance__ds__extract_doy + , subq_6.metric_time__day + , subq_6.metric_time__week + , subq_6.metric_time__month + , subq_6.metric_time__quarter + , subq_6.metric_time__year + , subq_6.metric_time__extract_year + , subq_6.metric_time__extract_quarter + , subq_6.metric_time__extract_month + , subq_6.metric_time__extract_day + , subq_6.metric_time__extract_dow + , subq_6.metric_time__extract_doy + , subq_6.user + , subq_6.revenue_instance__user + , subq_6.txn_revenue FROM ( -- Join Self Over Time Range SELECT - subq_3.metric_time__day AS metric_time__day - , subq_2.ds__day AS ds__day - , subq_2.ds__week AS ds__week - , subq_2.ds__month AS ds__month - , subq_2.ds__quarter AS ds__quarter - , subq_2.ds__year AS ds__year - , subq_2.ds__extract_year AS ds__extract_year - , subq_2.ds__extract_quarter AS ds__extract_quarter - , subq_2.ds__extract_month AS ds__extract_month - , subq_2.ds__extract_day AS ds__extract_day - , subq_2.ds__extract_dow AS ds__extract_dow - , subq_2.ds__extract_doy AS ds__extract_doy - , subq_2.revenue_instance__ds__day AS revenue_instance__ds__day - , subq_2.revenue_instance__ds__week AS revenue_instance__ds__week - , subq_2.revenue_instance__ds__month AS revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter AS revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year AS revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy - , subq_2.metric_time__week AS metric_time__week - , subq_2.metric_time__month AS metric_time__month - , subq_2.metric_time__quarter AS metric_time__quarter - , subq_2.metric_time__year AS metric_time__year - , subq_2.metric_time__extract_year AS metric_time__extract_year - , subq_2.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_2.metric_time__extract_month AS metric_time__extract_month - , subq_2.metric_time__extract_day AS metric_time__extract_day - , subq_2.metric_time__extract_dow AS metric_time__extract_dow - , subq_2.metric_time__extract_doy AS metric_time__extract_doy - , subq_2.user AS user - , subq_2.revenue_instance__user AS revenue_instance__user - , subq_2.txn_revenue AS txn_revenue + subq_4.metric_time__day AS metric_time__day + , subq_3.ds__day AS ds__day + , subq_3.ds__week AS ds__week + , subq_3.ds__month AS ds__month + , subq_3.ds__quarter AS ds__quarter + , subq_3.ds__year AS ds__year + , subq_3.ds__extract_year AS ds__extract_year + , subq_3.ds__extract_quarter AS ds__extract_quarter + , subq_3.ds__extract_month AS ds__extract_month + , subq_3.ds__extract_day AS ds__extract_day + , subq_3.ds__extract_dow AS ds__extract_dow + , subq_3.ds__extract_doy AS ds__extract_doy + , subq_3.revenue_instance__ds__day AS revenue_instance__ds__day + , subq_3.revenue_instance__ds__week AS revenue_instance__ds__week + , subq_3.revenue_instance__ds__month AS revenue_instance__ds__month + , subq_3.revenue_instance__ds__quarter AS revenue_instance__ds__quarter + , subq_3.revenue_instance__ds__year AS revenue_instance__ds__year + , subq_3.revenue_instance__ds__extract_year AS revenue_instance__ds__extract_year + , subq_3.revenue_instance__ds__extract_quarter AS revenue_instance__ds__extract_quarter + , subq_3.revenue_instance__ds__extract_month AS revenue_instance__ds__extract_month + , subq_3.revenue_instance__ds__extract_day AS revenue_instance__ds__extract_day + , subq_3.revenue_instance__ds__extract_dow AS revenue_instance__ds__extract_dow + , subq_3.revenue_instance__ds__extract_doy AS revenue_instance__ds__extract_doy + , subq_3.metric_time__week AS metric_time__week + , subq_3.metric_time__month AS metric_time__month + , subq_3.metric_time__quarter AS metric_time__quarter + , subq_3.metric_time__year AS metric_time__year + , subq_3.metric_time__extract_year AS metric_time__extract_year + , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_3.metric_time__extract_month AS metric_time__extract_month + , subq_3.metric_time__extract_day AS metric_time__extract_day + , subq_3.metric_time__extract_dow AS metric_time__extract_dow + , subq_3.metric_time__extract_doy AS metric_time__extract_doy + , subq_3.user AS user + , subq_3.revenue_instance__user AS revenue_instance__user + , subq_3.txn_revenue AS txn_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT - subq_4.ds AS metric_time__day - FROM ***************************.mf_time_spine subq_4 - WHERE subq_4.ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' - ) subq_3 + subq_5.ds AS metric_time__day + FROM ***************************.mf_time_spine subq_5 + WHERE subq_5.ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' + ) subq_4 INNER JOIN ( -- Constrain Time Range to [2019-11-01T00:00:00, 2020-01-01T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.revenue_instance__ds__day - , subq_1.revenue_instance__ds__week - , subq_1.revenue_instance__ds__month - , subq_1.revenue_instance__ds__quarter - , subq_1.revenue_instance__ds__year - , subq_1.revenue_instance__ds__extract_year - , subq_1.revenue_instance__ds__extract_quarter - , subq_1.revenue_instance__ds__extract_month - , subq_1.revenue_instance__ds__extract_day - , subq_1.revenue_instance__ds__extract_dow - , subq_1.revenue_instance__ds__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.revenue_instance__user - , subq_1.txn_revenue + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.revenue_instance__ds__day + , subq_2.revenue_instance__ds__week + , subq_2.revenue_instance__ds__month + , subq_2.revenue_instance__ds__quarter + , subq_2.revenue_instance__ds__year + , subq_2.revenue_instance__ds__extract_year + , subq_2.revenue_instance__ds__extract_quarter + , subq_2.revenue_instance__ds__extract_month + , subq_2.revenue_instance__ds__extract_day + , subq_2.revenue_instance__ds__extract_dow + , subq_2.revenue_instance__ds__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.revenue_instance__user + , subq_2.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.revenue_instance__ds__day - , subq_0.revenue_instance__ds__week - , subq_0.revenue_instance__ds__month - , subq_0.revenue_instance__ds__quarter - , subq_0.revenue_instance__ds__year - , subq_0.revenue_instance__ds__extract_year - , subq_0.revenue_instance__ds__extract_quarter - , subq_0.revenue_instance__ds__extract_month - , subq_0.revenue_instance__ds__extract_day - , subq_0.revenue_instance__ds__extract_dow - , subq_0.revenue_instance__ds__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.revenue_instance__user - , subq_0.txn_revenue + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.revenue_instance__ds__day + , subq_1.revenue_instance__ds__week + , subq_1.revenue_instance__ds__month + , subq_1.revenue_instance__ds__quarter + , subq_1.revenue_instance__ds__year + , subq_1.revenue_instance__ds__extract_year + , subq_1.revenue_instance__ds__extract_quarter + , subq_1.revenue_instance__ds__extract_month + , subq_1.revenue_instance__ds__extract_day + , subq_1.revenue_instance__ds__extract_dow + , subq_1.revenue_instance__ds__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.revenue_instance__user + , subq_1.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -214,20 +214,20 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN timestamp '2019-11-01' AND timestamp '2020-01-01' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2019-11-01' AND timestamp '2020-01-01' + ) subq_3 ON ( - subq_2.metric_time__day <= subq_3.metric_time__day + subq_3.metric_time__day <= subq_4.metric_time__day ) AND ( - subq_2.metric_time__day > DATE_ADD('month', -2, subq_3.metric_time__day) + subq_3.metric_time__day > DATE_ADD('month', -2, subq_4.metric_time__day) ) - ) subq_5 - WHERE subq_5.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' - ) subq_6 - ) subq_7 + ) subq_6 + WHERE subq_6.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' + ) subq_7 + ) subq_8 GROUP BY - subq_7.metric_time__day -) subq_8 + subq_8.metric_time__day +) subq_9 diff --git a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql index 999f3d612a..a21b64baab 100644 --- a/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_cumulative_metric_rendering.py/SqlPlan/Trino/test_cumulative_metric_with_time_constraint__plan0_optimized.sql @@ -14,15 +14,15 @@ sql_engine: Trino -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day AS metric_time__day - , SUM(subq_11.txn_revenue) AS trailing_2_months_revenue + subq_13.metric_time__day AS metric_time__day + , SUM(subq_12.txn_revenue) AS trailing_2_months_revenue FROM ( -- Read From Time Spine 'mf_time_spine' SELECT ds AS metric_time__day - FROM ***************************.mf_time_spine subq_13 + FROM ***************************.mf_time_spine subq_14 WHERE ds BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' -) subq_12 +) subq_13 INNER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -32,13 +32,13 @@ INNER JOIN ( , revenue AS txn_revenue FROM ***************************.fct_revenue revenue_src_28000 WHERE DATE_TRUNC('day', created_at) BETWEEN timestamp '2019-11-01' AND timestamp '2020-01-01' -) subq_11 +) subq_12 ON ( - subq_11.metric_time__day <= subq_12.metric_time__day + subq_12.metric_time__day <= subq_13.metric_time__day ) AND ( - subq_11.metric_time__day > DATE_ADD('month', -2, subq_12.metric_time__day) + subq_12.metric_time__day > DATE_ADD('month', -2, subq_13.metric_time__day) ) -WHERE subq_12.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' +WHERE subq_13.metric_time__day BETWEEN timestamp '2020-01-01' AND timestamp '2020-01-01' GROUP BY - subq_12.metric_time__day + subq_13.metric_time__day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0.sql index 1ec3b87853..7ee0648064 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS FLOAT64) / CAST(NULLIF(subq_15.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_SUB(CAST(subq_11.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_7.metric_time__day > DATE_SUB(CAST(subq_10.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY metric_time__martian_day - ) subq_15 + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY metric_time__martian_day -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index 5c47585372..af47e52d56 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY metric_time__martian_day - ) subq_21 + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_SUB(CAST(subq_27.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_23.metric_time__day > DATE_SUB(CAST(subq_26.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY metric_time__martian_day -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0.sql index f2b76c14d5..20bec2dc14 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS FLOAT64) / CAST(NULLIF(subq_18.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS FLOAT64) / CAST(NULLIF(subq_17.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_9.metric_time__day > DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY metric_time__martian_day - ) subq_17 + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY metric_time__martian_day -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index d068ca109e..abd2e67886 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATE_SUB(CAST(subq_31.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_27.metric_time__day > DATE_SUB(CAST(subq_30.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY metric_time__martian_day -) subq_36 +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index f2e38456fd..ac646563e1 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS FLOAT64) / CAST(NULLIF(subq_18.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS FLOAT64) / CAST(NULLIF(subq_17.visits, 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_9.metric_time__day > DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index ec9059541a..a709f32db5 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_24.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS FLOAT64) / CAST(NULLIF(MAX(subq_23.visits), 0) AS FLOAT64) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATE_SUB(CAST(subq_31.metric_time__day AS DATETIME), INTERVAL 7 day) + subq_27.metric_time__day > DATE_SUB(CAST(subq_30.metric_time__day AS DATETIME), INTERVAL 7 day) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0.sql index f93a2358a1..ddd0146596 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATE_ADD(CAST(subq_4.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) <= subq_4.ds__martian_day__last_value__lead - THEN DATE_ADD(CAST(subq_4.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) + WHEN DATE_ADD(CAST(subq_8.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) <= subq_8.ds__martian_day__last_value__lead + THEN DATE_ADD(CAST(subq_8.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY metric_time__day - ) subq_10 -) subq_11 + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0_optimized.sql index fc9cdc776d..8aee757d86 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATE_ADD(CAST(subq_16.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) <= subq_16.ds__martian_day__last_value__lead - THEN DATE_ADD(CAST(subq_16.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) + WHEN DATE_ADD(CAST(subq_24.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) <= subq_24.ds__martian_day__last_value__lead + THEN DATE_ADD(CAST(subq_24.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATETIME_TRUNC(ds, day) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY metric_time__day -) subq_23 +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index 781a7a32a8..6ffcf49718 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATETIME_TRUNC(subq_5.ds__day__lead, month) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATETIME_TRUNC(subq_9.ds__day__lead, month) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATE_ADD(CAST(subq_4.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) <= subq_4.ds__martian_day__last_value__lead - THEN DATE_ADD(CAST(subq_4.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) + WHEN DATE_ADD(CAST(subq_8.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) <= subq_8.ds__martian_day__last_value__lead + THEN DATE_ADD(CAST(subq_8.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_2.ds__day__row_number - 1 day) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY metric_time__martian_day , booking__ds__month , metric_time__extract_year - ) subq_11 -) subq_12 + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index 8d5e65a591..56cd5d05a4 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATETIME_TRUNC(subq_18.ds__day__lead, month) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATETIME_TRUNC(subq_26.ds__day__lead, month) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATE_ADD(CAST(subq_17.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) <= subq_17.ds__martian_day__last_value__lead - THEN DATE_ADD(CAST(subq_17.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) + WHEN DATE_ADD(CAST(subq_25.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) <= subq_25.ds__martian_day__last_value__lead + THEN DATE_ADD(CAST(subq_25.ds__martian_day__first_value__lead AS DATETIME), INTERVAL cte_6.ds__day__row_number - 1 day) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATETIME_TRUNC(ds, day) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY metric_time__martian_day , booking__ds__month , metric_time__extract_year -) subq_25 +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0.sql index b4d50aefd9..45eb00a30b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY booking__ds__martian_day - ) subq_10 - ) subq_11 + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY booking__ds__martian_day -) subq_12 +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 5608d1dfa6..e11a364aee 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATETIME_TRUNC(bookings_source_src_28000.ds, day) = subq_14.ds + DATETIME_TRUNC(bookings_source_src_28000.ds, day) = subq_13.ds GROUP BY booking__ds__martian_day -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index 8df3108b5b..9f2549563e 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY listing__user__ds__martian_day -) subq_12 +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index a1b60afb2e..64386acb64 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/BigQuery/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: BigQuery -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY listing__user__ds__martian_day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0.sql index a83d813755..e437380e2c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index 2f435fcd69..41b9d33e7d 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0.sql index 0191498f49..0061544a89 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index 944ffd1971..2b917c0dd7 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index bc1e9e47b9..1e742b3756 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 8fa2ba40dc..3b8d52363c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0.sql index 30d9bfdcbc..1b4941cb5b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0_optimized.sql index bda56d21ba..e0b92b9896 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) <= subq_16.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) <= subq_24.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index e7e1c93e73..541a044372 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index df554144f7..4c8a6652b1 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) <= subq_17.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) <= subq_25.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0.sql index b93acdb37b..4de955b36a 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 33b3c5091a..df198b605b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index 32ae051fde..242895d33b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index 171b6b17ce..223f9c9c1d 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Databricks/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: Databricks -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0.sql index 5b2d4416eb..bfcebabc3b 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > subq_11.metric_time__day - MAKE_INTERVAL(days => 7) + subq_7.metric_time__day > subq_10.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index 2957331eb0..02a47d5975 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > subq_27.metric_time__day - MAKE_INTERVAL(days => 7) + subq_23.metric_time__day > subq_26.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0.sql index 2091455f5a..884788bd76 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - MAKE_INTERVAL(days => 7) + subq_9.metric_time__day > subq_12.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index 66e90ed4e9..6cf8489226 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > subq_31.metric_time__day - MAKE_INTERVAL(days => 7) + subq_27.metric_time__day > subq_30.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index a32bda6fff..91b0070ee7 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > subq_13.metric_time__day - MAKE_INTERVAL(days => 7) + subq_9.metric_time__day > subq_12.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 57a38aa176..2c68b70500 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , GEN_RANDOM_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > subq_31.metric_time__day - MAKE_INTERVAL(days => 7) + subq_27.metric_time__day > subq_30.metric_time__day - MAKE_INTERVAL(days => 7) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0.sql index 890d0a9d9b..c2124e82e4 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN subq_4.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) <= subq_4.ds__martian_day__last_value__lead - THEN subq_4.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) + WHEN subq_8.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) <= subq_8.ds__martian_day__last_value__lead + THEN subq_8.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0_optimized.sql index f6360e2658..b1d9639b54 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN subq_16.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) <= subq_16.ds__martian_day__last_value__lead - THEN subq_16.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) + WHEN subq_24.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) <= subq_24.ds__martian_day__last_value__lead + THEN subq_24.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index 789ec2ae3e..1025fa3631 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN subq_4.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) <= subq_4.ds__martian_day__last_value__lead - THEN subq_4.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) + WHEN subq_8.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) <= subq_8.ds__martian_day__last_value__lead + THEN subq_8.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_2.ds__day__row_number - 1) AS INTEGER)) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index 34080ea51e..0af3ffdf5e 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN subq_17.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) <= subq_17.ds__martian_day__last_value__lead - THEN subq_17.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) + WHEN subq_25.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) <= subq_25.ds__martian_day__last_value__lead + THEN subq_25.ds__martian_day__first_value__lead + MAKE_INTERVAL(days => CAST ((cte_6.ds__day__row_number - 1) AS INTEGER)) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0.sql index f7b61ce13a..70290ff532 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 22a163a260..cda1b275ff 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index 80329b10c7..e80619af64 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index 36373ff77b..33596be6a9 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Postgres/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: Postgres -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0.sql index d005eac8b5..28b6c9c826 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index 2904e49bbc..8617bbf6a5 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0.sql index a0d30c5dc3..4f01416b82 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index 6ba3b70f5e..0f22e9b5bd 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index 036a6febe2..1781321c48 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 5ff1450639..c3ee5a6e31 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE PRECISION) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE PRECISION) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , CONCAT(CAST(RANDOM()*100000000 AS INT)::VARCHAR,CAST(RANDOM()*100000000 AS INT)::VARCHAR) AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0.sql index 04c9b4bcc1..99b7f4b87f 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0_optimized.sql index 3cad76cfc9..d66fcd87f0 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) <= subq_16.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) <= subq_24.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index 054292d30f..4893469313 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index 40f4b25dd1..a91344fb20 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) <= subq_17.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) <= subq_25.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0.sql index 691c59175c..5e810abd49 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 0faeff60bc..7481343444 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index 0f43640035..fa53a74eb6 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index d4b8a633f6..33f5b0854d 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Redshift/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: Redshift -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0.sql index a9f9f02131..744c9009ee 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATEADD(day, -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATEADD(day, -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index ca793ffd51..5b33d9aacd 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATEADD(day, -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATEADD(day, -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0.sql index d72ed4643f..1a7e49ec20 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index beadef9ae3..875ff0697c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index a373d2ff4f..874b3efdee 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , UUID_STRING() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATEADD(day, -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATEADD(day, -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 7b2a3ce162..e2aa8b45cd 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , UUID_STRING() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATEADD(day, -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATEADD(day, -7, subq_30.metric_time__day) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0.sql index 669e20d70d..db004c031c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0_optimized.sql index d4b52bf915..5154e5d282 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) <= subq_16.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) <= subq_24.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index 47ab6ec1b1..fd65d72394 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index b17d0be691..47332c97e4 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) <= subq_17.ds__martian_day__last_value__lead - THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) + WHEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) <= subq_25.ds__martian_day__last_value__lead + THEN DATEADD(day, (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0.sql index 2e0ed87f79..06cbf1cbef 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0_optimized.sql index dadf4178a1..bb3ab9f41d 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index ef12310f26..edf7bfaa80 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index cd1a996820..3066760184 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Snowflake/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: Snowflake -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0.sql index 5b4a53ae60..c4bc2f798a 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__martian_day - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_15.metric_time__martian_day + , CAST(subq_15.buys AS DOUBLE) / CAST(NULLIF(subq_15.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_4.visits) AS visits - , MAX(subq_15.buys) AS buys + , MAX(subq_14.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -115,111 +115,111 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.metric_time__martian_day - , SUM(subq_14.buys) AS buys + subq_13.metric_time__martian_day + , SUM(subq_13.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_13.metric_time__martian_day - , subq_13.buys + subq_12.metric_time__martian_day + , subq_12.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_12.metric_time__martian_day - , subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_11.metric_time__martian_day + , subq_11.metric_time__day + , subq_11.user + , subq_11.buys + , subq_11.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_7.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_7.metric_time__martian_day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_7.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_7.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_10.user + , subq_10.metric_time__day + , subq_10.mf_internal_uuid + ORDER BY subq_7.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_10.mf_internal_uuid AS mf_internal_uuid + , subq_10.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_7.metric_time__martian_day - , subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_6.metric_time__martian_day + , subq_6.metric_time__day + , subq_6.user + , subq_6.visits FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_5.ds__day AS ds__day - , subq_5.ds__week AS ds__week - , subq_5.ds__month AS ds__month - , subq_5.ds__quarter AS ds__quarter - , subq_5.ds__year AS ds__year - , subq_5.ds__extract_year AS ds__extract_year - , subq_5.ds__extract_quarter AS ds__extract_quarter - , subq_5.ds__extract_month AS ds__extract_month - , subq_5.ds__extract_day AS ds__extract_day - , subq_5.ds__extract_dow AS ds__extract_dow - , subq_5.ds__extract_doy AS ds__extract_doy - , subq_5.visit__ds__day AS visit__ds__day - , subq_5.visit__ds__week AS visit__ds__week - , subq_5.visit__ds__month AS visit__ds__month - , subq_5.visit__ds__quarter AS visit__ds__quarter - , subq_5.visit__ds__year AS visit__ds__year - , subq_5.visit__ds__extract_year AS visit__ds__extract_year - , subq_5.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_5.visit__ds__extract_month AS visit__ds__extract_month - , subq_5.visit__ds__extract_day AS visit__ds__extract_day - , subq_5.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_5.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.user AS user - , subq_5.session AS session - , subq_5.visit__user AS visit__user - , subq_5.visit__session AS visit__session - , subq_5.referrer_id AS referrer_id - , subq_5.visit__referrer_id AS visit__referrer_id - , subq_5.visits AS visits - , subq_5.visitors AS visitors - , subq_6.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_5.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -254,122 +254,122 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_5 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_6 + ***************************.mf_time_spine subq_5 ON - subq_5.ds__day = subq_6.ds - ) subq_7 - ) subq_8 + subq_0.ds__day = subq_5.ds + ) subq_6 + ) subq_7 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds_month__month + , subq_9.ds_month__quarter + , subq_9.ds_month__year + , subq_9.ds_month__extract_year + , subq_9.ds_month__extract_quarter + , subq_9.ds_month__extract_month + , subq_9.buy__ds__day + , subq_9.buy__ds__week + , subq_9.buy__ds__month + , subq_9.buy__ds__quarter + , subq_9.buy__ds__year + , subq_9.buy__ds__extract_year + , subq_9.buy__ds__extract_quarter + , subq_9.buy__ds__extract_month + , subq_9.buy__ds__extract_day + , subq_9.buy__ds__extract_dow + , subq_9.buy__ds__extract_doy + , subq_9.buy__ds_month__month + , subq_9.buy__ds_month__quarter + , subq_9.buy__ds_month__year + , subq_9.buy__ds_month__extract_year + , subq_9.buy__ds_month__extract_quarter + , subq_9.buy__ds_month__extract_month + , subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.metric_time__month + , subq_9.metric_time__quarter + , subq_9.metric_time__year + , subq_9.metric_time__extract_year + , subq_9.metric_time__extract_quarter + , subq_9.metric_time__extract_month + , subq_9.metric_time__extract_day + , subq_9.metric_time__extract_dow + , subq_9.metric_time__extract_doy + , subq_9.user + , subq_9.session_id + , subq_9.buy__user + , subq_9.buy__session_id + , subq_9.buys + , subq_9.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_month__month + , subq_8.ds_month__quarter + , subq_8.ds_month__year + , subq_8.ds_month__extract_year + , subq_8.ds_month__extract_quarter + , subq_8.ds_month__extract_month + , subq_8.buy__ds__day + , subq_8.buy__ds__week + , subq_8.buy__ds__month + , subq_8.buy__ds__quarter + , subq_8.buy__ds__year + , subq_8.buy__ds__extract_year + , subq_8.buy__ds__extract_quarter + , subq_8.buy__ds__extract_month + , subq_8.buy__ds__extract_day + , subq_8.buy__ds__extract_dow + , subq_8.buy__ds__extract_doy + , subq_8.buy__ds_month__month + , subq_8.buy__ds_month__quarter + , subq_8.buy__ds_month__year + , subq_8.buy__ds_month__extract_year + , subq_8.buy__ds_month__extract_quarter + , subq_8.buy__ds_month__extract_month + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.user + , subq_8.session_id + , subq_8.buy__user + , subq_8.buy__session_id + , subq_8.buys + , subq_8.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -415,27 +415,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON ( - subq_8.user = subq_11.user + subq_7.user = subq_10.user ) AND ( ( - subq_8.metric_time__day <= subq_11.metric_time__day + subq_7.metric_time__day <= subq_10.metric_time__day ) AND ( - subq_8.metric_time__day > DATE_ADD('day', -7, subq_11.metric_time__day) + subq_7.metric_time__day > DATE_ADD('day', -7, subq_10.metric_time__day) ) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_14.metric_time__martian_day - ) subq_15 + subq_13.metric_time__martian_day + ) subq_14 ON - subq_4.metric_time__martian_day = subq_15.metric_time__martian_day + subq_4.metric_time__martian_day = subq_14.metric_time__martian_day GROUP BY - COALESCE(subq_4.metric_time__martian_day, subq_15.metric_time__martian_day) -) subq_16 + COALESCE(subq_4.metric_time__martian_day, subq_14.metric_time__martian_day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0_optimized.sql index ac783b83f0..e789d92646 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity__plan0_optimized.sql @@ -19,25 +19,25 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_21.visits) AS visits - , MAX(subq_31.buys) AS buys + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_20.visits) AS visits + , MAX(subq_30.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__martian_day'] -- Aggregate Measures SELECT - subq_18.martian_day AS metric_time__martian_day + subq_17.martian_day AS metric_time__martian_day , SUM(sma_28019_cte.visits) AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_18 + ***************************.mf_time_spine subq_17 ON - sma_28019_cte.metric_time__day = subq_18.ds + sma_28019_cte.metric_time__day = subq_17.ds GROUP BY - subq_18.martian_day - ) subq_21 + subq_17.martian_day + ) subq_20 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -48,55 +48,55 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_24.visits) OVER ( + FIRST_VALUE(subq_23.visits) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_24.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_23.metric_time__martian_day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_24.metric_time__day) OVER ( + , FIRST_VALUE(subq_23.metric_time__day) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_24.user) OVER ( + , FIRST_VALUE(subq_23.user) OVER ( PARTITION BY - subq_27.user - , subq_27.metric_time__day - , subq_27.mf_internal_uuid - ORDER BY subq_24.metric_time__day DESC + subq_26.user + , subq_26.metric_time__day + , subq_26.mf_internal_uuid + ORDER BY subq_23.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_27.mf_internal_uuid AS mf_internal_uuid - , subq_27.buys AS buys + , subq_26.mf_internal_uuid AS mf_internal_uuid + , subq_26.buys AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Join to Custom Granularity Dataset -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_22.martian_day AS metric_time__martian_day + subq_21.martian_day AS metric_time__martian_day , sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_21 ON - sma_28019_cte.metric_time__day = subq_22.ds - ) subq_24 + sma_28019_cte.metric_time__day = subq_21.ds + ) subq_23 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -107,23 +107,23 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_27 + ) subq_26 ON ( - subq_24.user = subq_27.user + subq_23.user = subq_26.user ) AND ( ( - subq_24.metric_time__day <= subq_27.metric_time__day + subq_23.metric_time__day <= subq_26.metric_time__day ) AND ( - subq_24.metric_time__day > DATE_ADD('day', -7, subq_27.metric_time__day) + subq_23.metric_time__day > DATE_ADD('day', -7, subq_26.metric_time__day) ) ) - ) subq_28 + ) subq_27 GROUP BY metric_time__martian_day - ) subq_31 + ) subq_30 ON - subq_21.metric_time__martian_day = subq_31.metric_time__martian_day + subq_20.metric_time__martian_day = subq_30.metric_time__martian_day GROUP BY - COALESCE(subq_21.metric_time__martian_day, subq_31.metric_time__martian_day) -) subq_32 + COALESCE(subq_20.metric_time__martian_day, subq_30.metric_time__martian_day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0.sql index 302770ba16..d992a8ebd7 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__martian_day - , CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + subq_17.metric_time__martian_day + , CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) AS metric_time__martian_day + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) AS metric_time__martian_day , MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -162,156 +162,156 @@ FROM ( FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_16.metric_time__martian_day - , SUM(subq_16.buys) AS buys + subq_15.metric_time__martian_day + , SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'metric_time__martian_day'] SELECT - subq_15.metric_time__martian_day - , subq_15.buys + subq_14.metric_time__martian_day + , subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -346,124 +346,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -509,27 +509,27 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_ADD('day', -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATE_ADD('day', -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 + ) subq_15 GROUP BY - subq_16.metric_time__martian_day - ) subq_17 + subq_15.metric_time__martian_day + ) subq_16 ON - subq_5.metric_time__martian_day = subq_17.metric_time__martian_day + subq_5.metric_time__martian_day = subq_16.metric_time__martian_day GROUP BY - COALESCE(subq_5.metric_time__martian_day, subq_17.metric_time__martian_day) -) subq_18 + COALESCE(subq_5.metric_time__martian_day, subq_16.metric_time__martian_day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql index 264a83e193..844886e591 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) AS metric_time__martian_day - , MAX(subq_24.visits) AS visits - , MAX(subq_35.buys) AS buys + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) AS metric_time__martian_day + , MAX(subq_23.visits) AS visits + , MAX(subq_34.buys) AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__martian_day'] @@ -34,17 +34,17 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' GROUP BY metric_time__martian_day - ) subq_24 + ) subq_23 FULL OUTER JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys', 'metric_time__martian_day'] @@ -55,47 +55,47 @@ FROM ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -104,15 +104,15 @@ FROM ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -123,23 +123,23 @@ FROM ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATE_ADD('day', -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATE_ADD('day', -7, subq_30.metric_time__day) ) ) - ) subq_32 + ) subq_31 GROUP BY metric_time__martian_day - ) subq_35 + ) subq_34 ON - subq_24.metric_time__martian_day = subq_35.metric_time__martian_day + subq_23.metric_time__martian_day = subq_34.metric_time__martian_day GROUP BY - COALESCE(subq_24.metric_time__martian_day, subq_35.metric_time__martian_day) -) subq_36 + COALESCE(subq_23.metric_time__martian_day, subq_34.metric_time__martian_day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql index 7a4e55907f..2b1e6f589c 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0.sql @@ -4,12 +4,12 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - CAST(subq_18.buys AS DOUBLE) / CAST(NULLIF(subq_18.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(subq_17.buys AS DOUBLE) / CAST(NULLIF(subq_17.visits, 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_5.visits) AS visits - , MAX(subq_17.buys) AS buys + , MAX(subq_16.buys) AS buys FROM ( -- Aggregate Measures SELECT @@ -156,154 +156,154 @@ FROM ( CROSS JOIN ( -- Aggregate Measures SELECT - SUM(subq_16.buys) AS buys + SUM(subq_15.buys) AS buys FROM ( -- Pass Only Elements: ['buys',] SELECT - subq_15.buys + subq_14.buys FROM ( -- Find conversions for user within the range of 7 day SELECT - subq_14.metric_time__martian_day - , subq_14.metric_time__day - , subq_14.user - , subq_14.buys - , subq_14.visits + subq_13.metric_time__martian_day + , subq_13.metric_time__day + , subq_13.user + , subq_13.buys + , subq_13.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_10.visits) OVER ( + FIRST_VALUE(subq_9.visits) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_10.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_9.metric_time__martian_day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_10.metric_time__day) OVER ( + , FIRST_VALUE(subq_9.metric_time__day) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_10.user) OVER ( + , FIRST_VALUE(subq_9.user) OVER ( PARTITION BY - subq_13.user - , subq_13.metric_time__day - , subq_13.mf_internal_uuid - ORDER BY subq_10.metric_time__day DESC + subq_12.user + , subq_12.metric_time__day + , subq_12.mf_internal_uuid + ORDER BY subq_9.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_13.mf_internal_uuid AS mf_internal_uuid - , subq_13.buys AS buys + , subq_12.mf_internal_uuid AS mf_internal_uuid + , subq_12.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT - subq_9.metric_time__martian_day - , subq_9.metric_time__day - , subq_9.user - , subq_9.visits + subq_8.metric_time__martian_day + , subq_8.metric_time__day + , subq_8.user + , subq_8.visits FROM ( -- Constrain Output with WHERE SELECT - subq_8.metric_time__martian_day - , subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.visit__ds__day - , subq_8.visit__ds__week - , subq_8.visit__ds__month - , subq_8.visit__ds__quarter - , subq_8.visit__ds__year - , subq_8.visit__ds__extract_year - , subq_8.visit__ds__extract_quarter - , subq_8.visit__ds__extract_month - , subq_8.visit__ds__extract_day - , subq_8.visit__ds__extract_dow - , subq_8.visit__ds__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.user - , subq_8.session - , subq_8.visit__user - , subq_8.visit__session - , subq_8.referrer_id - , subq_8.visit__referrer_id - , subq_8.visits - , subq_8.visitors + subq_7.metric_time__martian_day + , subq_7.ds__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.visit__ds__day + , subq_7.visit__ds__week + , subq_7.visit__ds__month + , subq_7.visit__ds__quarter + , subq_7.visit__ds__year + , subq_7.visit__ds__extract_year + , subq_7.visit__ds__extract_quarter + , subq_7.visit__ds__extract_month + , subq_7.visit__ds__extract_day + , subq_7.visit__ds__extract_dow + , subq_7.visit__ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.user + , subq_7.session + , subq_7.visit__user + , subq_7.visit__session + , subq_7.referrer_id + , subq_7.visit__referrer_id + , subq_7.visits + , subq_7.visitors FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.visit__ds__day AS visit__ds__day - , subq_6.visit__ds__week AS visit__ds__week - , subq_6.visit__ds__month AS visit__ds__month - , subq_6.visit__ds__quarter AS visit__ds__quarter - , subq_6.visit__ds__year AS visit__ds__year - , subq_6.visit__ds__extract_year AS visit__ds__extract_year - , subq_6.visit__ds__extract_quarter AS visit__ds__extract_quarter - , subq_6.visit__ds__extract_month AS visit__ds__extract_month - , subq_6.visit__ds__extract_day AS visit__ds__extract_day - , subq_6.visit__ds__extract_dow AS visit__ds__extract_dow - , subq_6.visit__ds__extract_doy AS visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user AS user - , subq_6.session AS session - , subq_6.visit__user AS visit__user - , subq_6.visit__session AS visit__session - , subq_6.referrer_id AS referrer_id - , subq_6.visit__referrer_id AS visit__referrer_id - , subq_6.visits AS visits - , subq_6.visitors AS visitors - , subq_7.martian_day AS metric_time__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.visit__ds__day AS visit__ds__day + , subq_0.visit__ds__week AS visit__ds__week + , subq_0.visit__ds__month AS visit__ds__month + , subq_0.visit__ds__quarter AS visit__ds__quarter + , subq_0.visit__ds__year AS visit__ds__year + , subq_0.visit__ds__extract_year AS visit__ds__extract_year + , subq_0.visit__ds__extract_quarter AS visit__ds__extract_quarter + , subq_0.visit__ds__extract_month AS visit__ds__extract_month + , subq_0.visit__ds__extract_day AS visit__ds__extract_day + , subq_0.visit__ds__extract_dow AS visit__ds__extract_dow + , subq_0.visit__ds__extract_doy AS visit__ds__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.user AS user + , subq_0.session AS session + , subq_0.visit__user AS visit__user + , subq_0.visit__session AS visit__session + , subq_0.referrer_id AS referrer_id + , subq_0.visit__referrer_id AS visit__referrer_id + , subq_0.visits AS visits + , subq_0.visitors AS visitors + , subq_6.martian_day AS metric_time__martian_day FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -338,124 +338,124 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.ds__day = subq_7.ds - ) subq_8 + subq_0.ds__day = subq_6.ds + ) subq_7 WHERE metric_time__martian_day = '2020-01-01' - ) subq_9 - ) subq_10 + ) subq_8 + ) subq_9 INNER JOIN ( -- Add column with generated UUID SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_month__month - , subq_12.ds_month__quarter - , subq_12.ds_month__year - , subq_12.ds_month__extract_year - , subq_12.ds_month__extract_quarter - , subq_12.ds_month__extract_month - , subq_12.buy__ds__day - , subq_12.buy__ds__week - , subq_12.buy__ds__month - , subq_12.buy__ds__quarter - , subq_12.buy__ds__year - , subq_12.buy__ds__extract_year - , subq_12.buy__ds__extract_quarter - , subq_12.buy__ds__extract_month - , subq_12.buy__ds__extract_day - , subq_12.buy__ds__extract_dow - , subq_12.buy__ds__extract_doy - , subq_12.buy__ds_month__month - , subq_12.buy__ds_month__quarter - , subq_12.buy__ds_month__year - , subq_12.buy__ds_month__extract_year - , subq_12.buy__ds_month__extract_quarter - , subq_12.buy__ds_month__extract_month - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.user - , subq_12.session_id - , subq_12.buy__user - , subq_12.buy__session_id - , subq_12.buys - , subq_12.buyers + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_month__month + , subq_11.ds_month__quarter + , subq_11.ds_month__year + , subq_11.ds_month__extract_year + , subq_11.ds_month__extract_quarter + , subq_11.ds_month__extract_month + , subq_11.buy__ds__day + , subq_11.buy__ds__week + , subq_11.buy__ds__month + , subq_11.buy__ds__quarter + , subq_11.buy__ds__year + , subq_11.buy__ds__extract_year + , subq_11.buy__ds__extract_quarter + , subq_11.buy__ds__extract_month + , subq_11.buy__ds__extract_day + , subq_11.buy__ds__extract_dow + , subq_11.buy__ds__extract_doy + , subq_11.buy__ds_month__month + , subq_11.buy__ds_month__quarter + , subq_11.buy__ds_month__year + , subq_11.buy__ds_month__extract_year + , subq_11.buy__ds_month__extract_quarter + , subq_11.buy__ds_month__extract_month + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.user + , subq_11.session_id + , subq_11.buy__user + , subq_11.buy__session_id + , subq_11.buys + , subq_11.buyers , uuid() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_month__month - , subq_11.ds_month__quarter - , subq_11.ds_month__year - , subq_11.ds_month__extract_year - , subq_11.ds_month__extract_quarter - , subq_11.ds_month__extract_month - , subq_11.buy__ds__day - , subq_11.buy__ds__week - , subq_11.buy__ds__month - , subq_11.buy__ds__quarter - , subq_11.buy__ds__year - , subq_11.buy__ds__extract_year - , subq_11.buy__ds__extract_quarter - , subq_11.buy__ds__extract_month - , subq_11.buy__ds__extract_day - , subq_11.buy__ds__extract_dow - , subq_11.buy__ds__extract_doy - , subq_11.buy__ds_month__month - , subq_11.buy__ds_month__quarter - , subq_11.buy__ds_month__year - , subq_11.buy__ds_month__extract_year - , subq_11.buy__ds_month__extract_quarter - , subq_11.buy__ds_month__extract_month - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.user - , subq_11.session_id - , subq_11.buy__user - , subq_11.buy__session_id - , subq_11.buys - , subq_11.buyers + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_month__month + , subq_10.ds_month__quarter + , subq_10.ds_month__year + , subq_10.ds_month__extract_year + , subq_10.ds_month__extract_quarter + , subq_10.ds_month__extract_month + , subq_10.buy__ds__day + , subq_10.buy__ds__week + , subq_10.buy__ds__month + , subq_10.buy__ds__quarter + , subq_10.buy__ds__year + , subq_10.buy__ds__extract_year + , subq_10.buy__ds__extract_quarter + , subq_10.buy__ds__extract_month + , subq_10.buy__ds__extract_day + , subq_10.buy__ds__extract_dow + , subq_10.buy__ds__extract_doy + , subq_10.buy__ds_month__month + , subq_10.buy__ds_month__quarter + , subq_10.buy__ds_month__year + , subq_10.buy__ds_month__extract_year + , subq_10.buy__ds_month__extract_quarter + , subq_10.buy__ds_month__extract_month + , subq_10.ds__day AS metric_time__day + , subq_10.ds__week AS metric_time__week + , subq_10.ds__month AS metric_time__month + , subq_10.ds__quarter AS metric_time__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year AS metric_time__extract_year + , subq_10.ds__extract_quarter AS metric_time__extract_quarter + , subq_10.ds__extract_month AS metric_time__extract_month + , subq_10.ds__extract_day AS metric_time__extract_day + , subq_10.ds__extract_dow AS metric_time__extract_dow + , subq_10.ds__extract_doy AS metric_time__extract_doy + , subq_10.user + , subq_10.session_id + , subq_10.buy__user + , subq_10.buy__session_id + , subq_10.buys + , subq_10.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -501,21 +501,21 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 ON ( - subq_10.user = subq_13.user + subq_9.user = subq_12.user ) AND ( ( - subq_10.metric_time__day <= subq_13.metric_time__day + subq_9.metric_time__day <= subq_12.metric_time__day ) AND ( - subq_10.metric_time__day > DATE_ADD('day', -7, subq_13.metric_time__day) + subq_9.metric_time__day > DATE_ADD('day', -7, subq_12.metric_time__day) ) ) - ) subq_14 - ) subq_15 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_13 + ) subq_14 + ) subq_15 + ) subq_16 +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql index 54a729a740..18bfef05ed 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_conversion_metric_with_custom_granularity_filter_not_in_group_by__plan0_optimized.sql @@ -15,7 +15,7 @@ WITH sma_28019_cte AS ( ) SELECT - CAST(MAX(subq_35.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_24.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days + CAST(MAX(subq_34.buys) AS DOUBLE) / CAST(NULLIF(MAX(subq_23.visits), 0) AS DOUBLE) AS visit_buy_conversion_rate_7days FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits',] @@ -27,15 +27,15 @@ FROM ( -- Join to Custom Granularity Dataset SELECT sma_28019_cte.visits AS visits - , subq_20.martian_day AS metric_time__martian_day + , subq_19.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_20 + ***************************.mf_time_spine subq_19 ON - sma_28019_cte.metric_time__day = subq_20.ds - ) subq_21 + sma_28019_cte.metric_time__day = subq_19.ds + ) subq_20 WHERE metric_time__martian_day = '2020-01-01' -) subq_24 +) subq_23 CROSS JOIN ( -- Find conversions for user within the range of 7 day -- Pass Only Elements: ['buys',] @@ -45,47 +45,47 @@ CROSS JOIN ( FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_28.visits) OVER ( + FIRST_VALUE(subq_27.visits) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_28.metric_time__martian_day) OVER ( + , FIRST_VALUE(subq_27.metric_time__martian_day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__martian_day - , FIRST_VALUE(subq_28.metric_time__day) OVER ( + , FIRST_VALUE(subq_27.metric_time__day) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_28.user) OVER ( + , FIRST_VALUE(subq_27.user) OVER ( PARTITION BY - subq_31.user - , subq_31.metric_time__day - , subq_31.mf_internal_uuid - ORDER BY subq_28.metric_time__day DESC + subq_30.user + , subq_30.metric_time__day + , subq_30.mf_internal_uuid + ORDER BY subq_27.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_31.mf_internal_uuid AS mf_internal_uuid - , subq_31.buys AS buys + , subq_30.mf_internal_uuid AS mf_internal_uuid + , subq_30.buys AS buys FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['visits', 'metric_time__day', 'metric_time__martian_day', 'user'] SELECT metric_time__martian_day , metric_time__day - , subq_26.user + , subq_25.user , visits FROM ( -- Read From CTE For node_id=sma_28019 @@ -94,15 +94,15 @@ CROSS JOIN ( sma_28019_cte.metric_time__day AS metric_time__day , sma_28019_cte.user AS user , sma_28019_cte.visits AS visits - , subq_25.martian_day AS metric_time__martian_day + , subq_24.martian_day AS metric_time__martian_day FROM sma_28019_cte sma_28019_cte LEFT OUTER JOIN - ***************************.mf_time_spine subq_25 + ***************************.mf_time_spine subq_24 ON - sma_28019_cte.metric_time__day = subq_25.ds - ) subq_26 + sma_28019_cte.metric_time__day = subq_24.ds + ) subq_25 WHERE metric_time__martian_day = '2020-01-01' - ) subq_28 + ) subq_27 INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' -- Metric Time Dimension 'ds' @@ -113,16 +113,16 @@ CROSS JOIN ( , 1 AS buys , uuid() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_31 + ) subq_30 ON ( - subq_28.user = subq_31.user + subq_27.user = subq_30.user ) AND ( ( - subq_28.metric_time__day <= subq_31.metric_time__day + subq_27.metric_time__day <= subq_30.metric_time__day ) AND ( - subq_28.metric_time__day > DATE_ADD('day', -7, subq_31.metric_time__day) + subq_27.metric_time__day > DATE_ADD('day', -7, subq_30.metric_time__day) ) ) - ) subq_32 -) subq_35 + ) subq_31 +) subq_34 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0.sql index 93f246e95c..df9b65c77a 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0.sql @@ -4,134 +4,134 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day + subq_15.metric_time__day , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_14.metric_time__day + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_9.metric_time__day - , SUM(subq_9.bookings) AS bookings + subq_13.metric_time__day + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['ds__day', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -149,19 +149,19 @@ FROM ( , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -179,23 +179,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -207,114 +207,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -407,13 +407,13 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day - ) subq_8 - ) subq_9 + subq_11.ds__day = subq_5.metric_time__day + ) subq_12 + ) subq_13 GROUP BY - subq_9.metric_time__day - ) subq_10 -) subq_11 + subq_13.metric_time__day + ) subq_14 +) subq_15 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0_optimized.sql index 07e3107b42..6fae9ac1aa 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window__plan0_optimized.sql @@ -12,8 +12,8 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_17.ds__day__lead AS metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_25.ds__day__lead AS metric_time__day + , SUM(subq_21.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -42,8 +42,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) <= subq_16.ds__martian_day__last_value__lead - THEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_16.ds__martian_day__first_value__lead) + WHEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) <= subq_24.ds__martian_day__last_value__lead + THEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_24.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -64,11 +64,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_15 - ) subq_16 + ) subq_23 + ) subq_24 ON - cte_6.ds__martian_day = subq_16.ds__martian_day - ) subq_17 + cte_6.ds__martian_day = subq_24.ds__martian_day + ) subq_25 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -76,9 +76,9 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_21 ON - subq_17.ds__day = subq_13.metric_time__day + subq_25.ds__day = subq_21.metric_time__day GROUP BY - subq_17.ds__day__lead -) subq_23 + subq_25.ds__day__lead +) subq_31 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0.sql index 906938e79c..76cfc6eabf 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0.sql @@ -4,148 +4,148 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__martian_day - , subq_12.booking__ds__month - , subq_12.metric_time__extract_year + subq_16.metric_time__martian_day + , subq_16.booking__ds__month + , subq_16.metric_time__extract_year , bookings AS bookings_offset_one_martian_day FROM ( -- Compute Metrics via Expressions SELECT - subq_11.metric_time__martian_day - , subq_11.booking__ds__month - , subq_11.metric_time__extract_year - , subq_11.bookings + subq_15.metric_time__martian_day + , subq_15.booking__ds__month + , subq_15.metric_time__extract_year + , subq_15.bookings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - , SUM(subq_10.bookings) AS bookings + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__martian_day'] SELECT - subq_9.metric_time__martian_day - , subq_9.booking__ds__month - , subq_9.metric_time__extract_year - , subq_9.bookings + subq_13.metric_time__martian_day + , subq_13.booking__ds__month + , subq_13.metric_time__extract_year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset -- Join to Custom Granularity Dataset SELECT - subq_7.booking__ds__month AS booking__ds__month - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__day AS metric_time__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_8.martian_day AS metric_time__martian_day + subq_11.booking__ds__month AS booking__ds__month + , subq_11.metric_time__extract_year AS metric_time__extract_year + , subq_11.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_12.martian_day AS metric_time__martian_day FROM ( -- Pass Only Elements: ['ds__day', 'booking__ds__month', 'metric_time__extract_year', 'metric_time__day'] SELECT - subq_6.ds__day - , subq_6.booking__ds__month - , subq_6.metric_time__extract_year - , subq_6.metric_time__day + subq_10.ds__day + , subq_10.booking__ds__month + , subq_10.metric_time__extract_year + , subq_10.metric_time__day FROM ( -- Apply Requested Granularities SELECT - subq_5.ds__day - , DATE_TRUNC('month', subq_5.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_5.ds__day__lead) AS metric_time__extract_year - , subq_5.ds__day__lead AS metric_time__day + subq_9.ds__day + , DATE_TRUNC('month', subq_9.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_9.ds__day__lead) AS metric_time__extract_year + , subq_9.ds__day__lead AS metric_time__day FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_2 AS ( @@ -163,19 +163,19 @@ FROM ( , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) AS ds__extract_dow , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day - , FIRST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , FIRST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__first_value - , LAST_VALUE(subq_2.ds__day) OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + , LAST_VALUE(subq_6.ds__day) OVER ( + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ds__martian_day__last_value , ROW_NUMBER() OVER ( - PARTITION BY subq_2.ds__martian_day - ORDER BY subq_2.ds__day + PARTITION BY subq_6.ds__martian_day + ORDER BY subq_6.ds__day ) AS ds__day__row_number FROM ( -- Read From Time Spine 'mf_time_spine' @@ -193,23 +193,23 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_2 + ) subq_6 ) SELECT cte_2.ds__day AS ds__day , CASE - WHEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) <= subq_4.ds__martian_day__last_value__lead - THEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_4.ds__martian_day__first_value__lead) + WHEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) <= subq_8.ds__martian_day__last_value__lead + THEN DATE_ADD('day', (cte_2.ds__day__row_number - 1), subq_8.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_2 cte_2 INNER JOIN ( -- Offset Custom Granularity Bounds SELECT - subq_3.ds__martian_day - , LEAD(subq_3.ds__martian_day__first_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__first_value__lead - , LEAD(subq_3.ds__martian_day__last_value, 1) OVER (ORDER BY subq_3.ds__martian_day) AS ds__martian_day__last_value__lead + subq_7.ds__martian_day + , LEAD(subq_7.ds__martian_day__first_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__first_value__lead + , LEAD(subq_7.ds__martian_day__last_value, 1) OVER (ORDER BY subq_7.ds__martian_day) AS ds__martian_day__last_value__lead FROM ( -- Get Unique Rows for Custom Granularity Bounds SELECT @@ -221,114 +221,114 @@ FROM ( cte_2.ds__martian_day , cte_2.ds__martian_day__first_value , cte_2.ds__martian_day__last_value - ) subq_3 - ) subq_4 + ) subq_7 + ) subq_8 ON - cte_2.ds__martian_day = subq_4.ds__martian_day - ) subq_5 - ) subq_6 - ) subq_7 + cte_2.ds__martian_day = subq_8.ds__martian_day + ) subq_9 + ) subq_10 + ) subq_11 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -421,19 +421,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 ON - subq_7.ds__day = subq_1.metric_time__day + subq_11.ds__day = subq_5.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_8 + ***************************.mf_time_spine subq_12 ON - subq_7.metric_time__day = subq_8.ds - ) subq_9 - ) subq_10 + subq_11.metric_time__day = subq_12.ds + ) subq_13 + ) subq_14 GROUP BY - subq_10.metric_time__martian_day - , subq_10.booking__ds__month - , subq_10.metric_time__extract_year - ) subq_11 -) subq_12 + subq_14.metric_time__martian_day + , subq_14.booking__ds__month + , subq_14.metric_time__extract_year + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql index 018817e2e8..d63b3eb85f 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_custom_offset_window_with_granularity_and_date_part__plan0_optimized.sql @@ -15,10 +15,10 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_21.martian_day AS metric_time__martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) AS booking__ds__month - , EXTRACT(year FROM subq_18.ds__day__lead) AS metric_time__extract_year - , SUM(subq_14.bookings) AS bookings + subq_29.martian_day AS metric_time__martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) AS booking__ds__month + , EXTRACT(year FROM subq_26.ds__day__lead) AS metric_time__extract_year + , SUM(subq_22.bookings) AS bookings FROM ( -- Offset Base Granularity By Custom Granularity Period(s) WITH cte_6 AS ( @@ -47,8 +47,8 @@ FROM ( SELECT cte_6.ds__day AS ds__day , CASE - WHEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) <= subq_17.ds__martian_day__last_value__lead - THEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_17.ds__martian_day__first_value__lead) + WHEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) <= subq_25.ds__martian_day__last_value__lead + THEN DATE_ADD('day', (cte_6.ds__day__row_number - 1), subq_25.ds__martian_day__first_value__lead) ELSE NULL END AS ds__day__lead FROM cte_6 cte_6 @@ -69,11 +69,11 @@ FROM ( ds__martian_day , ds__martian_day__first_value , ds__martian_day__last_value - ) subq_16 - ) subq_17 + ) subq_24 + ) subq_25 ON - cte_6.ds__martian_day = subq_17.ds__martian_day - ) subq_18 + cte_6.ds__martian_day = subq_25.ds__martian_day + ) subq_26 INNER JOIN ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -81,15 +81,15 @@ FROM ( DATE_TRUNC('day', ds) AS metric_time__day , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_14 + ) subq_22 ON - subq_18.ds__day = subq_14.metric_time__day + subq_26.ds__day = subq_22.metric_time__day LEFT OUTER JOIN - ***************************.mf_time_spine subq_21 + ***************************.mf_time_spine subq_29 ON - subq_18.ds__day__lead = subq_21.ds + subq_26.ds__day__lead = subq_29.ds GROUP BY - subq_21.martian_day - , DATE_TRUNC('month', subq_18.ds__day__lead) - , EXTRACT(year FROM subq_18.ds__day__lead) -) subq_25 + subq_29.martian_day + , DATE_TRUNC('month', subq_26.ds__day__lead) + , EXTRACT(year FROM subq_26.ds__day__lead) +) subq_33 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0.sql index 69d1165a97..c8c28e4e94 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__martian_day + subq_11.booking__ds__martian_day , booking_value * 0.05 / bookers AS booking_fees_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) AS booking__ds__martian_day + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) AS booking__ds__martian_day , MAX(subq_5.booking_value) AS booking_value - , MAX(subq_11.bookers) AS bookers + , MAX(subq_10.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -236,121 +236,121 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__ds__martian_day - , subq_10.bookers + subq_9.booking__ds__martian_day + , subq_9.bookers FROM ( -- Aggregate Measures SELECT - subq_9.booking__ds__martian_day - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_8.booking__ds__martian_day + , COUNT(DISTINCT subq_8.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__martian_day'] SELECT - subq_8.booking__ds__martian_day - , subq_8.bookers + subq_7.booking__ds__martian_day + , subq_7.bookers FROM ( -- Metric Time Dimension 'ds' -- Join to Custom Granularity Dataset SELECT - subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_7.martian_day AS booking__ds__martian_day + subq_0.ds__day AS ds__day + , subq_0.ds__week AS ds__week + , subq_0.ds__month AS ds__month + , subq_0.ds__quarter AS ds__quarter + , subq_0.ds__year AS ds__year + , subq_0.ds__extract_year AS ds__extract_year + , subq_0.ds__extract_quarter AS ds__extract_quarter + , subq_0.ds__extract_month AS ds__extract_month + , subq_0.ds__extract_day AS ds__extract_day + , subq_0.ds__extract_dow AS ds__extract_dow + , subq_0.ds__extract_doy AS ds__extract_doy + , subq_0.ds_partitioned__day AS ds_partitioned__day + , subq_0.ds_partitioned__week AS ds_partitioned__week + , subq_0.ds_partitioned__month AS ds_partitioned__month + , subq_0.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_0.ds_partitioned__year AS ds_partitioned__year + , subq_0.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_0.paid_at__day AS paid_at__day + , subq_0.paid_at__week AS paid_at__week + , subq_0.paid_at__month AS paid_at__month + , subq_0.paid_at__quarter AS paid_at__quarter + , subq_0.paid_at__year AS paid_at__year + , subq_0.paid_at__extract_year AS paid_at__extract_year + , subq_0.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_0.paid_at__extract_month AS paid_at__extract_month + , subq_0.paid_at__extract_day AS paid_at__extract_day + , subq_0.paid_at__extract_dow AS paid_at__extract_dow + , subq_0.paid_at__extract_doy AS paid_at__extract_doy + , subq_0.booking__ds__day AS booking__ds__day + , subq_0.booking__ds__week AS booking__ds__week + , subq_0.booking__ds__month AS booking__ds__month + , subq_0.booking__ds__quarter AS booking__ds__quarter + , subq_0.booking__ds__year AS booking__ds__year + , subq_0.booking__ds__extract_year AS booking__ds__extract_year + , subq_0.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_0.booking__ds__extract_month AS booking__ds__extract_month + , subq_0.booking__ds__extract_day AS booking__ds__extract_day + , subq_0.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_0.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day AS booking__paid_at__day + , subq_0.booking__paid_at__week AS booking__paid_at__week + , subq_0.booking__paid_at__month AS booking__paid_at__month + , subq_0.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_0.booking__paid_at__year AS booking__paid_at__year + , subq_0.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing AS listing + , subq_0.guest AS guest + , subq_0.host AS host + , subq_0.booking__listing AS booking__listing + , subq_0.booking__guest AS booking__guest + , subq_0.booking__host AS booking__host + , subq_0.is_instant AS is_instant + , subq_0.booking__is_instant AS booking__is_instant + , subq_0.bookings AS bookings + , subq_0.instant_bookings AS instant_bookings + , subq_0.booking_value AS booking_value + , subq_0.max_booking_value AS max_booking_value + , subq_0.min_booking_value AS min_booking_value + , subq_0.bookers AS bookers + , subq_0.average_booking_value AS average_booking_value + , subq_0.referred_bookings AS referred_bookings + , subq_0.median_booking_value AS median_booking_value + , subq_0.booking_value_p99 AS booking_value_p99 + , subq_0.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_6.martian_day AS booking__ds__martian_day FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -443,19 +443,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 + ) subq_0 LEFT OUTER JOIN - ***************************.mf_time_spine subq_7 + ***************************.mf_time_spine subq_6 ON - subq_6.booking__ds__day = subq_7.ds - ) subq_8 - ) subq_9 + subq_0.booking__ds__day = subq_6.ds + ) subq_7 + ) subq_8 GROUP BY - subq_9.booking__ds__martian_day - ) subq_10 - ) subq_11 + subq_8.booking__ds__martian_day + ) subq_9 + ) subq_10 ON - subq_5.booking__ds__martian_day = subq_11.booking__ds__martian_day + subq_5.booking__ds__martian_day = subq_10.booking__ds__martian_day GROUP BY - COALESCE(subq_5.booking__ds__martian_day, subq_11.booking__ds__martian_day) -) subq_12 + COALESCE(subq_5.booking__ds__martian_day, subq_10.booking__ds__martian_day) +) subq_11 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0_optimized.sql index 0396ee4003..7d8a785918 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_derived_metric_with_custom_granularity__plan0_optimized.sql @@ -13,14 +13,14 @@ FROM ( -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_14.martian_day AS booking__ds__martian_day + subq_13.martian_day AS booking__ds__martian_day , SUM(bookings_source_src_28000.booking_value) AS booking_value , COUNT(DISTINCT bookings_source_src_28000.guest_id) AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 LEFT OUTER JOIN - ***************************.mf_time_spine subq_14 + ***************************.mf_time_spine subq_13 ON - DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_14.ds + DATE_TRUNC('day', bookings_source_src_28000.ds) = subq_13.ds GROUP BY - subq_14.martian_day -) subq_18 + subq_13.martian_day +) subq_17 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql index e339846022..0bb8fc2bb4 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0.sql @@ -6,224 +6,224 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_12.listing__user__ds__martian_day - , subq_12.bookings + subq_36.listing__user__ds__martian_day + , subq_36.bookings FROM ( -- Aggregate Measures SELECT - subq_11.listing__user__ds__martian_day - , SUM(subq_11.bookings) AS bookings + subq_35.listing__user__ds__martian_day + , SUM(subq_35.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__ds__martian_day'] SELECT - subq_10.listing__user__ds__martian_day - , subq_10.bookings + subq_34.listing__user__ds__martian_day + , subq_34.bookings FROM ( -- Join Standard Outputs -- Join to Custom Granularity Dataset SELECT - subq_8.user__ds__day AS listing__user__ds__day - , subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 - , subq_9.martian_day AS listing__user__ds__martian_day + subq_32.user__ds__day AS listing__user__ds__day + , subq_32.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_25.ds__day AS ds__day + , subq_25.ds__week AS ds__week + , subq_25.ds__month AS ds__month + , subq_25.ds__quarter AS ds__quarter + , subq_25.ds__year AS ds__year + , subq_25.ds__extract_year AS ds__extract_year + , subq_25.ds__extract_quarter AS ds__extract_quarter + , subq_25.ds__extract_month AS ds__extract_month + , subq_25.ds__extract_day AS ds__extract_day + , subq_25.ds__extract_dow AS ds__extract_dow + , subq_25.ds__extract_doy AS ds__extract_doy + , subq_25.ds_partitioned__day AS ds_partitioned__day + , subq_25.ds_partitioned__week AS ds_partitioned__week + , subq_25.ds_partitioned__month AS ds_partitioned__month + , subq_25.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_25.ds_partitioned__year AS ds_partitioned__year + , subq_25.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_25.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_25.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_25.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_25.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_25.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_25.paid_at__day AS paid_at__day + , subq_25.paid_at__week AS paid_at__week + , subq_25.paid_at__month AS paid_at__month + , subq_25.paid_at__quarter AS paid_at__quarter + , subq_25.paid_at__year AS paid_at__year + , subq_25.paid_at__extract_year AS paid_at__extract_year + , subq_25.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_25.paid_at__extract_month AS paid_at__extract_month + , subq_25.paid_at__extract_day AS paid_at__extract_day + , subq_25.paid_at__extract_dow AS paid_at__extract_dow + , subq_25.paid_at__extract_doy AS paid_at__extract_doy + , subq_25.booking__ds__day AS booking__ds__day + , subq_25.booking__ds__week AS booking__ds__week + , subq_25.booking__ds__month AS booking__ds__month + , subq_25.booking__ds__quarter AS booking__ds__quarter + , subq_25.booking__ds__year AS booking__ds__year + , subq_25.booking__ds__extract_year AS booking__ds__extract_year + , subq_25.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_25.booking__ds__extract_month AS booking__ds__extract_month + , subq_25.booking__ds__extract_day AS booking__ds__extract_day + , subq_25.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_25.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_25.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_25.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_25.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_25.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_25.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_25.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_25.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_25.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_25.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_25.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_25.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_25.booking__paid_at__day AS booking__paid_at__day + , subq_25.booking__paid_at__week AS booking__paid_at__week + , subq_25.booking__paid_at__month AS booking__paid_at__month + , subq_25.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_25.booking__paid_at__year AS booking__paid_at__year + , subq_25.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_25.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_25.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_25.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_25.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_25.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_25.metric_time__day AS metric_time__day + , subq_25.metric_time__week AS metric_time__week + , subq_25.metric_time__month AS metric_time__month + , subq_25.metric_time__quarter AS metric_time__quarter + , subq_25.metric_time__year AS metric_time__year + , subq_25.metric_time__extract_year AS metric_time__extract_year + , subq_25.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_25.metric_time__extract_month AS metric_time__extract_month + , subq_25.metric_time__extract_day AS metric_time__extract_day + , subq_25.metric_time__extract_dow AS metric_time__extract_dow + , subq_25.metric_time__extract_doy AS metric_time__extract_doy + , subq_25.listing AS listing + , subq_25.guest AS guest + , subq_25.host AS host + , subq_25.booking__listing AS booking__listing + , subq_25.booking__guest AS booking__guest + , subq_25.booking__host AS booking__host + , subq_25.is_instant AS is_instant + , subq_25.booking__is_instant AS booking__is_instant + , subq_25.bookings AS bookings + , subq_25.instant_bookings AS instant_bookings + , subq_25.booking_value AS booking_value + , subq_25.max_booking_value AS max_booking_value + , subq_25.min_booking_value AS min_booking_value + , subq_25.bookers AS bookers + , subq_25.average_booking_value AS average_booking_value + , subq_25.referred_bookings AS referred_bookings + , subq_25.median_booking_value AS median_booking_value + , subq_25.booking_value_p99 AS booking_value_p99 + , subq_25.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_25.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_25.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + , subq_33.martian_day AS listing__user__ds__martian_day FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.ds_partitioned__day + , subq_24.ds_partitioned__week + , subq_24.ds_partitioned__month + , subq_24.ds_partitioned__quarter + , subq_24.ds_partitioned__year + , subq_24.ds_partitioned__extract_year + , subq_24.ds_partitioned__extract_quarter + , subq_24.ds_partitioned__extract_month + , subq_24.ds_partitioned__extract_day + , subq_24.ds_partitioned__extract_dow + , subq_24.ds_partitioned__extract_doy + , subq_24.paid_at__day + , subq_24.paid_at__week + , subq_24.paid_at__month + , subq_24.paid_at__quarter + , subq_24.paid_at__year + , subq_24.paid_at__extract_year + , subq_24.paid_at__extract_quarter + , subq_24.paid_at__extract_month + , subq_24.paid_at__extract_day + , subq_24.paid_at__extract_dow + , subq_24.paid_at__extract_doy + , subq_24.booking__ds__day + , subq_24.booking__ds__week + , subq_24.booking__ds__month + , subq_24.booking__ds__quarter + , subq_24.booking__ds__year + , subq_24.booking__ds__extract_year + , subq_24.booking__ds__extract_quarter + , subq_24.booking__ds__extract_month + , subq_24.booking__ds__extract_day + , subq_24.booking__ds__extract_dow + , subq_24.booking__ds__extract_doy + , subq_24.booking__ds_partitioned__day + , subq_24.booking__ds_partitioned__week + , subq_24.booking__ds_partitioned__month + , subq_24.booking__ds_partitioned__quarter + , subq_24.booking__ds_partitioned__year + , subq_24.booking__ds_partitioned__extract_year + , subq_24.booking__ds_partitioned__extract_quarter + , subq_24.booking__ds_partitioned__extract_month + , subq_24.booking__ds_partitioned__extract_day + , subq_24.booking__ds_partitioned__extract_dow + , subq_24.booking__ds_partitioned__extract_doy + , subq_24.booking__paid_at__day + , subq_24.booking__paid_at__week + , subq_24.booking__paid_at__month + , subq_24.booking__paid_at__quarter + , subq_24.booking__paid_at__year + , subq_24.booking__paid_at__extract_year + , subq_24.booking__paid_at__extract_quarter + , subq_24.booking__paid_at__extract_month + , subq_24.booking__paid_at__extract_day + , subq_24.booking__paid_at__extract_dow + , subq_24.booking__paid_at__extract_doy + , subq_24.ds__day AS metric_time__day + , subq_24.ds__week AS metric_time__week + , subq_24.ds__month AS metric_time__month + , subq_24.ds__quarter AS metric_time__quarter + , subq_24.ds__year AS metric_time__year + , subq_24.ds__extract_year AS metric_time__extract_year + , subq_24.ds__extract_quarter AS metric_time__extract_quarter + , subq_24.ds__extract_month AS metric_time__extract_month + , subq_24.ds__extract_day AS metric_time__extract_day + , subq_24.ds__extract_dow AS metric_time__extract_dow + , subq_24.ds__extract_doy AS metric_time__extract_doy + , subq_24.listing + , subq_24.guest + , subq_24.host + , subq_24.booking__listing + , subq_24.booking__guest + , subq_24.booking__host + , subq_24.is_instant + , subq_24.booking__is_instant + , subq_24.bookings + , subq_24.instant_bookings + , subq_24.booking_value + , subq_24.max_booking_value + , subq_24.min_booking_value + , subq_24.bookers + , subq_24.average_booking_value + , subq_24.referred_bookings + , subq_24.median_booking_value + , subq_24.booking_value_p99 + , subq_24.discrete_booking_value_p99 + , subq_24.approximate_continuous_booking_value_p99 + , subq_24.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -316,253 +316,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_24 + ) subq_25 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] SELECT - subq_7.user__ds__day - , subq_7.user__ds_partitioned__day - , subq_7.listing + subq_31.user__ds__day + , subq_31.user__ds_partitioned__day + , subq_31.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_30.home_state AS user__home_state + , subq_30.ds__day AS user__ds__day + , subq_30.ds__week AS user__ds__week + , subq_30.ds__month AS user__ds__month + , subq_30.ds__quarter AS user__ds__quarter + , subq_30.ds__year AS user__ds__year + , subq_30.ds__extract_year AS user__ds__extract_year + , subq_30.ds__extract_quarter AS user__ds__extract_quarter + , subq_30.ds__extract_month AS user__ds__extract_month + , subq_30.ds__extract_day AS user__ds__extract_day + , subq_30.ds__extract_dow AS user__ds__extract_dow + , subq_30.ds__extract_doy AS user__ds__extract_doy + , subq_30.created_at__day AS user__created_at__day + , subq_30.created_at__week AS user__created_at__week + , subq_30.created_at__month AS user__created_at__month + , subq_30.created_at__quarter AS user__created_at__quarter + , subq_30.created_at__year AS user__created_at__year + , subq_30.created_at__extract_year AS user__created_at__extract_year + , subq_30.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_30.created_at__extract_month AS user__created_at__extract_month + , subq_30.created_at__extract_day AS user__created_at__extract_day + , subq_30.created_at__extract_dow AS user__created_at__extract_dow + , subq_30.created_at__extract_doy AS user__created_at__extract_doy + , subq_30.ds_partitioned__day AS user__ds_partitioned__day + , subq_30.ds_partitioned__week AS user__ds_partitioned__week + , subq_30.ds_partitioned__month AS user__ds_partitioned__month + , subq_30.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_30.ds_partitioned__year AS user__ds_partitioned__year + , subq_30.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_30.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_30.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_30.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_30.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_30.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_30.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_30.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_30.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_30.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_30.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_30.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_30.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_30.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_30.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_30.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_30.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_30.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_30.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_30.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_30.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_30.bio_added_ts__second AS user__bio_added_ts__second + , subq_30.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_30.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_30.bio_added_ts__day AS user__bio_added_ts__day + , subq_30.bio_added_ts__week AS user__bio_added_ts__week + , subq_30.bio_added_ts__month AS user__bio_added_ts__month + , subq_30.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_30.bio_added_ts__year AS user__bio_added_ts__year + , subq_30.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_30.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_30.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_30.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_30.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_30.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_30.last_login_ts__minute AS user__last_login_ts__minute + , subq_30.last_login_ts__hour AS user__last_login_ts__hour + , subq_30.last_login_ts__day AS user__last_login_ts__day + , subq_30.last_login_ts__week AS user__last_login_ts__week + , subq_30.last_login_ts__month AS user__last_login_ts__month + , subq_30.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_30.last_login_ts__year AS user__last_login_ts__year + , subq_30.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_30.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_30.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_30.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_30.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_30.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_30.archived_at__hour AS user__archived_at__hour + , subq_30.archived_at__day AS user__archived_at__day + , subq_30.archived_at__week AS user__archived_at__week + , subq_30.archived_at__month AS user__archived_at__month + , subq_30.archived_at__quarter AS user__archived_at__quarter + , subq_30.archived_at__year AS user__archived_at__year + , subq_30.archived_at__extract_year AS user__archived_at__extract_year + , subq_30.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_30.archived_at__extract_month AS user__archived_at__extract_month + , subq_30.archived_at__extract_day AS user__archived_at__extract_day + , subq_30.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_30.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_30.metric_time__day AS user__metric_time__day + , subq_30.metric_time__week AS user__metric_time__week + , subq_30.metric_time__month AS user__metric_time__month + , subq_30.metric_time__quarter AS user__metric_time__quarter + , subq_30.metric_time__year AS user__metric_time__year + , subq_30.metric_time__extract_year AS user__metric_time__extract_year + , subq_30.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_30.metric_time__extract_month AS user__metric_time__extract_month + , subq_30.metric_time__extract_day AS user__metric_time__extract_day + , subq_30.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_30.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_27.ds__day AS ds__day + , subq_27.ds__week AS ds__week + , subq_27.ds__month AS ds__month + , subq_27.ds__quarter AS ds__quarter + , subq_27.ds__year AS ds__year + , subq_27.ds__extract_year AS ds__extract_year + , subq_27.ds__extract_quarter AS ds__extract_quarter + , subq_27.ds__extract_month AS ds__extract_month + , subq_27.ds__extract_day AS ds__extract_day + , subq_27.ds__extract_dow AS ds__extract_dow + , subq_27.ds__extract_doy AS ds__extract_doy + , subq_27.created_at__day AS created_at__day + , subq_27.created_at__week AS created_at__week + , subq_27.created_at__month AS created_at__month + , subq_27.created_at__quarter AS created_at__quarter + , subq_27.created_at__year AS created_at__year + , subq_27.created_at__extract_year AS created_at__extract_year + , subq_27.created_at__extract_quarter AS created_at__extract_quarter + , subq_27.created_at__extract_month AS created_at__extract_month + , subq_27.created_at__extract_day AS created_at__extract_day + , subq_27.created_at__extract_dow AS created_at__extract_dow + , subq_27.created_at__extract_doy AS created_at__extract_doy + , subq_27.listing__ds__day AS listing__ds__day + , subq_27.listing__ds__week AS listing__ds__week + , subq_27.listing__ds__month AS listing__ds__month + , subq_27.listing__ds__quarter AS listing__ds__quarter + , subq_27.listing__ds__year AS listing__ds__year + , subq_27.listing__ds__extract_year AS listing__ds__extract_year + , subq_27.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_27.listing__ds__extract_month AS listing__ds__extract_month + , subq_27.listing__ds__extract_day AS listing__ds__extract_day + , subq_27.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_27.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_27.listing__created_at__day AS listing__created_at__day + , subq_27.listing__created_at__week AS listing__created_at__week + , subq_27.listing__created_at__month AS listing__created_at__month + , subq_27.listing__created_at__quarter AS listing__created_at__quarter + , subq_27.listing__created_at__year AS listing__created_at__year + , subq_27.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_27.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_27.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_27.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_27.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_27.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_27.metric_time__day AS metric_time__day + , subq_27.metric_time__week AS metric_time__week + , subq_27.metric_time__month AS metric_time__month + , subq_27.metric_time__quarter AS metric_time__quarter + , subq_27.metric_time__year AS metric_time__year + , subq_27.metric_time__extract_year AS metric_time__extract_year + , subq_27.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_27.metric_time__extract_month AS metric_time__extract_month + , subq_27.metric_time__extract_day AS metric_time__extract_day + , subq_27.metric_time__extract_dow AS metric_time__extract_dow + , subq_27.metric_time__extract_doy AS metric_time__extract_doy + , subq_27.listing AS listing + , subq_27.user AS user + , subq_27.listing__user AS listing__user + , subq_27.country_latest AS country_latest + , subq_27.is_lux_latest AS is_lux_latest + , subq_27.capacity_latest AS capacity_latest + , subq_27.listing__country_latest AS listing__country_latest + , subq_27.listing__is_lux_latest AS listing__is_lux_latest + , subq_27.listing__capacity_latest AS listing__capacity_latest + , subq_27.listings AS listings + , subq_27.largest_listing AS largest_listing + , subq_27.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_26.ds__day + , subq_26.ds__week + , subq_26.ds__month + , subq_26.ds__quarter + , subq_26.ds__year + , subq_26.ds__extract_year + , subq_26.ds__extract_quarter + , subq_26.ds__extract_month + , subq_26.ds__extract_day + , subq_26.ds__extract_dow + , subq_26.ds__extract_doy + , subq_26.created_at__day + , subq_26.created_at__week + , subq_26.created_at__month + , subq_26.created_at__quarter + , subq_26.created_at__year + , subq_26.created_at__extract_year + , subq_26.created_at__extract_quarter + , subq_26.created_at__extract_month + , subq_26.created_at__extract_day + , subq_26.created_at__extract_dow + , subq_26.created_at__extract_doy + , subq_26.listing__ds__day + , subq_26.listing__ds__week + , subq_26.listing__ds__month + , subq_26.listing__ds__quarter + , subq_26.listing__ds__year + , subq_26.listing__ds__extract_year + , subq_26.listing__ds__extract_quarter + , subq_26.listing__ds__extract_month + , subq_26.listing__ds__extract_day + , subq_26.listing__ds__extract_dow + , subq_26.listing__ds__extract_doy + , subq_26.listing__created_at__day + , subq_26.listing__created_at__week + , subq_26.listing__created_at__month + , subq_26.listing__created_at__quarter + , subq_26.listing__created_at__year + , subq_26.listing__created_at__extract_year + , subq_26.listing__created_at__extract_quarter + , subq_26.listing__created_at__extract_month + , subq_26.listing__created_at__extract_day + , subq_26.listing__created_at__extract_dow + , subq_26.listing__created_at__extract_doy + , subq_26.ds__day AS metric_time__day + , subq_26.ds__week AS metric_time__week + , subq_26.ds__month AS metric_time__month + , subq_26.ds__quarter AS metric_time__quarter + , subq_26.ds__year AS metric_time__year + , subq_26.ds__extract_year AS metric_time__extract_year + , subq_26.ds__extract_quarter AS metric_time__extract_quarter + , subq_26.ds__extract_month AS metric_time__extract_month + , subq_26.ds__extract_day AS metric_time__extract_day + , subq_26.ds__extract_dow AS metric_time__extract_dow + , subq_26.ds__extract_doy AS metric_time__extract_doy + , subq_26.listing + , subq_26.user + , subq_26.listing__user + , subq_26.country_latest + , subq_26.is_lux_latest + , subq_26.capacity_latest + , subq_26.listing__country_latest + , subq_26.listing__is_lux_latest + , subq_26.listing__capacity_latest + , subq_26.listings + , subq_26.largest_listing + , subq_26.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -623,8 +623,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_26 + ) subq_27 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -817,386 +817,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_29.ds__day + , subq_29.ds__week + , subq_29.ds__month + , subq_29.ds__quarter + , subq_29.ds__year + , subq_29.ds__extract_year + , subq_29.ds__extract_quarter + , subq_29.ds__extract_month + , subq_29.ds__extract_day + , subq_29.ds__extract_dow + , subq_29.ds__extract_doy + , subq_29.created_at__day + , subq_29.created_at__week + , subq_29.created_at__month + , subq_29.created_at__quarter + , subq_29.created_at__year + , subq_29.created_at__extract_year + , subq_29.created_at__extract_quarter + , subq_29.created_at__extract_month + , subq_29.created_at__extract_day + , subq_29.created_at__extract_dow + , subq_29.created_at__extract_doy + , subq_29.ds_partitioned__day + , subq_29.ds_partitioned__week + , subq_29.ds_partitioned__month + , subq_29.ds_partitioned__quarter + , subq_29.ds_partitioned__year + , subq_29.ds_partitioned__extract_year + , subq_29.ds_partitioned__extract_quarter + , subq_29.ds_partitioned__extract_month + , subq_29.ds_partitioned__extract_day + , subq_29.ds_partitioned__extract_dow + , subq_29.ds_partitioned__extract_doy + , subq_29.last_profile_edit_ts__millisecond + , subq_29.last_profile_edit_ts__second + , subq_29.last_profile_edit_ts__minute + , subq_29.last_profile_edit_ts__hour + , subq_29.last_profile_edit_ts__day + , subq_29.last_profile_edit_ts__week + , subq_29.last_profile_edit_ts__month + , subq_29.last_profile_edit_ts__quarter + , subq_29.last_profile_edit_ts__year + , subq_29.last_profile_edit_ts__extract_year + , subq_29.last_profile_edit_ts__extract_quarter + , subq_29.last_profile_edit_ts__extract_month + , subq_29.last_profile_edit_ts__extract_day + , subq_29.last_profile_edit_ts__extract_dow + , subq_29.last_profile_edit_ts__extract_doy + , subq_29.bio_added_ts__second + , subq_29.bio_added_ts__minute + , subq_29.bio_added_ts__hour + , subq_29.bio_added_ts__day + , subq_29.bio_added_ts__week + , subq_29.bio_added_ts__month + , subq_29.bio_added_ts__quarter + , subq_29.bio_added_ts__year + , subq_29.bio_added_ts__extract_year + , subq_29.bio_added_ts__extract_quarter + , subq_29.bio_added_ts__extract_month + , subq_29.bio_added_ts__extract_day + , subq_29.bio_added_ts__extract_dow + , subq_29.bio_added_ts__extract_doy + , subq_29.last_login_ts__minute + , subq_29.last_login_ts__hour + , subq_29.last_login_ts__day + , subq_29.last_login_ts__week + , subq_29.last_login_ts__month + , subq_29.last_login_ts__quarter + , subq_29.last_login_ts__year + , subq_29.last_login_ts__extract_year + , subq_29.last_login_ts__extract_quarter + , subq_29.last_login_ts__extract_month + , subq_29.last_login_ts__extract_day + , subq_29.last_login_ts__extract_dow + , subq_29.last_login_ts__extract_doy + , subq_29.archived_at__hour + , subq_29.archived_at__day + , subq_29.archived_at__week + , subq_29.archived_at__month + , subq_29.archived_at__quarter + , subq_29.archived_at__year + , subq_29.archived_at__extract_year + , subq_29.archived_at__extract_quarter + , subq_29.archived_at__extract_month + , subq_29.archived_at__extract_day + , subq_29.archived_at__extract_dow + , subq_29.archived_at__extract_doy + , subq_29.user__ds__day + , subq_29.user__ds__week + , subq_29.user__ds__month + , subq_29.user__ds__quarter + , subq_29.user__ds__year + , subq_29.user__ds__extract_year + , subq_29.user__ds__extract_quarter + , subq_29.user__ds__extract_month + , subq_29.user__ds__extract_day + , subq_29.user__ds__extract_dow + , subq_29.user__ds__extract_doy + , subq_29.user__created_at__day + , subq_29.user__created_at__week + , subq_29.user__created_at__month + , subq_29.user__created_at__quarter + , subq_29.user__created_at__year + , subq_29.user__created_at__extract_year + , subq_29.user__created_at__extract_quarter + , subq_29.user__created_at__extract_month + , subq_29.user__created_at__extract_day + , subq_29.user__created_at__extract_dow + , subq_29.user__created_at__extract_doy + , subq_29.user__ds_partitioned__day + , subq_29.user__ds_partitioned__week + , subq_29.user__ds_partitioned__month + , subq_29.user__ds_partitioned__quarter + , subq_29.user__ds_partitioned__year + , subq_29.user__ds_partitioned__extract_year + , subq_29.user__ds_partitioned__extract_quarter + , subq_29.user__ds_partitioned__extract_month + , subq_29.user__ds_partitioned__extract_day + , subq_29.user__ds_partitioned__extract_dow + , subq_29.user__ds_partitioned__extract_doy + , subq_29.user__last_profile_edit_ts__millisecond + , subq_29.user__last_profile_edit_ts__second + , subq_29.user__last_profile_edit_ts__minute + , subq_29.user__last_profile_edit_ts__hour + , subq_29.user__last_profile_edit_ts__day + , subq_29.user__last_profile_edit_ts__week + , subq_29.user__last_profile_edit_ts__month + , subq_29.user__last_profile_edit_ts__quarter + , subq_29.user__last_profile_edit_ts__year + , subq_29.user__last_profile_edit_ts__extract_year + , subq_29.user__last_profile_edit_ts__extract_quarter + , subq_29.user__last_profile_edit_ts__extract_month + , subq_29.user__last_profile_edit_ts__extract_day + , subq_29.user__last_profile_edit_ts__extract_dow + , subq_29.user__last_profile_edit_ts__extract_doy + , subq_29.user__bio_added_ts__second + , subq_29.user__bio_added_ts__minute + , subq_29.user__bio_added_ts__hour + , subq_29.user__bio_added_ts__day + , subq_29.user__bio_added_ts__week + , subq_29.user__bio_added_ts__month + , subq_29.user__bio_added_ts__quarter + , subq_29.user__bio_added_ts__year + , subq_29.user__bio_added_ts__extract_year + , subq_29.user__bio_added_ts__extract_quarter + , subq_29.user__bio_added_ts__extract_month + , subq_29.user__bio_added_ts__extract_day + , subq_29.user__bio_added_ts__extract_dow + , subq_29.user__bio_added_ts__extract_doy + , subq_29.user__last_login_ts__minute + , subq_29.user__last_login_ts__hour + , subq_29.user__last_login_ts__day + , subq_29.user__last_login_ts__week + , subq_29.user__last_login_ts__month + , subq_29.user__last_login_ts__quarter + , subq_29.user__last_login_ts__year + , subq_29.user__last_login_ts__extract_year + , subq_29.user__last_login_ts__extract_quarter + , subq_29.user__last_login_ts__extract_month + , subq_29.user__last_login_ts__extract_day + , subq_29.user__last_login_ts__extract_dow + , subq_29.user__last_login_ts__extract_doy + , subq_29.user__archived_at__hour + , subq_29.user__archived_at__day + , subq_29.user__archived_at__week + , subq_29.user__archived_at__month + , subq_29.user__archived_at__quarter + , subq_29.user__archived_at__year + , subq_29.user__archived_at__extract_year + , subq_29.user__archived_at__extract_quarter + , subq_29.user__archived_at__extract_month + , subq_29.user__archived_at__extract_day + , subq_29.user__archived_at__extract_dow + , subq_29.user__archived_at__extract_doy + , subq_29.metric_time__day + , subq_29.metric_time__week + , subq_29.metric_time__month + , subq_29.metric_time__quarter + , subq_29.metric_time__year + , subq_29.metric_time__extract_year + , subq_29.metric_time__extract_quarter + , subq_29.metric_time__extract_month + , subq_29.metric_time__extract_day + , subq_29.metric_time__extract_dow + , subq_29.metric_time__extract_doy + , subq_29.user + , subq_29.home_state + , subq_29.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_28.ds__day + , subq_28.ds__week + , subq_28.ds__month + , subq_28.ds__quarter + , subq_28.ds__year + , subq_28.ds__extract_year + , subq_28.ds__extract_quarter + , subq_28.ds__extract_month + , subq_28.ds__extract_day + , subq_28.ds__extract_dow + , subq_28.ds__extract_doy + , subq_28.created_at__day + , subq_28.created_at__week + , subq_28.created_at__month + , subq_28.created_at__quarter + , subq_28.created_at__year + , subq_28.created_at__extract_year + , subq_28.created_at__extract_quarter + , subq_28.created_at__extract_month + , subq_28.created_at__extract_day + , subq_28.created_at__extract_dow + , subq_28.created_at__extract_doy + , subq_28.ds_partitioned__day + , subq_28.ds_partitioned__week + , subq_28.ds_partitioned__month + , subq_28.ds_partitioned__quarter + , subq_28.ds_partitioned__year + , subq_28.ds_partitioned__extract_year + , subq_28.ds_partitioned__extract_quarter + , subq_28.ds_partitioned__extract_month + , subq_28.ds_partitioned__extract_day + , subq_28.ds_partitioned__extract_dow + , subq_28.ds_partitioned__extract_doy + , subq_28.last_profile_edit_ts__millisecond + , subq_28.last_profile_edit_ts__second + , subq_28.last_profile_edit_ts__minute + , subq_28.last_profile_edit_ts__hour + , subq_28.last_profile_edit_ts__day + , subq_28.last_profile_edit_ts__week + , subq_28.last_profile_edit_ts__month + , subq_28.last_profile_edit_ts__quarter + , subq_28.last_profile_edit_ts__year + , subq_28.last_profile_edit_ts__extract_year + , subq_28.last_profile_edit_ts__extract_quarter + , subq_28.last_profile_edit_ts__extract_month + , subq_28.last_profile_edit_ts__extract_day + , subq_28.last_profile_edit_ts__extract_dow + , subq_28.last_profile_edit_ts__extract_doy + , subq_28.bio_added_ts__second + , subq_28.bio_added_ts__minute + , subq_28.bio_added_ts__hour + , subq_28.bio_added_ts__day + , subq_28.bio_added_ts__week + , subq_28.bio_added_ts__month + , subq_28.bio_added_ts__quarter + , subq_28.bio_added_ts__year + , subq_28.bio_added_ts__extract_year + , subq_28.bio_added_ts__extract_quarter + , subq_28.bio_added_ts__extract_month + , subq_28.bio_added_ts__extract_day + , subq_28.bio_added_ts__extract_dow + , subq_28.bio_added_ts__extract_doy + , subq_28.last_login_ts__minute + , subq_28.last_login_ts__hour + , subq_28.last_login_ts__day + , subq_28.last_login_ts__week + , subq_28.last_login_ts__month + , subq_28.last_login_ts__quarter + , subq_28.last_login_ts__year + , subq_28.last_login_ts__extract_year + , subq_28.last_login_ts__extract_quarter + , subq_28.last_login_ts__extract_month + , subq_28.last_login_ts__extract_day + , subq_28.last_login_ts__extract_dow + , subq_28.last_login_ts__extract_doy + , subq_28.archived_at__hour + , subq_28.archived_at__day + , subq_28.archived_at__week + , subq_28.archived_at__month + , subq_28.archived_at__quarter + , subq_28.archived_at__year + , subq_28.archived_at__extract_year + , subq_28.archived_at__extract_quarter + , subq_28.archived_at__extract_month + , subq_28.archived_at__extract_day + , subq_28.archived_at__extract_dow + , subq_28.archived_at__extract_doy + , subq_28.user__ds__day + , subq_28.user__ds__week + , subq_28.user__ds__month + , subq_28.user__ds__quarter + , subq_28.user__ds__year + , subq_28.user__ds__extract_year + , subq_28.user__ds__extract_quarter + , subq_28.user__ds__extract_month + , subq_28.user__ds__extract_day + , subq_28.user__ds__extract_dow + , subq_28.user__ds__extract_doy + , subq_28.user__created_at__day + , subq_28.user__created_at__week + , subq_28.user__created_at__month + , subq_28.user__created_at__quarter + , subq_28.user__created_at__year + , subq_28.user__created_at__extract_year + , subq_28.user__created_at__extract_quarter + , subq_28.user__created_at__extract_month + , subq_28.user__created_at__extract_day + , subq_28.user__created_at__extract_dow + , subq_28.user__created_at__extract_doy + , subq_28.user__ds_partitioned__day + , subq_28.user__ds_partitioned__week + , subq_28.user__ds_partitioned__month + , subq_28.user__ds_partitioned__quarter + , subq_28.user__ds_partitioned__year + , subq_28.user__ds_partitioned__extract_year + , subq_28.user__ds_partitioned__extract_quarter + , subq_28.user__ds_partitioned__extract_month + , subq_28.user__ds_partitioned__extract_day + , subq_28.user__ds_partitioned__extract_dow + , subq_28.user__ds_partitioned__extract_doy + , subq_28.user__last_profile_edit_ts__millisecond + , subq_28.user__last_profile_edit_ts__second + , subq_28.user__last_profile_edit_ts__minute + , subq_28.user__last_profile_edit_ts__hour + , subq_28.user__last_profile_edit_ts__day + , subq_28.user__last_profile_edit_ts__week + , subq_28.user__last_profile_edit_ts__month + , subq_28.user__last_profile_edit_ts__quarter + , subq_28.user__last_profile_edit_ts__year + , subq_28.user__last_profile_edit_ts__extract_year + , subq_28.user__last_profile_edit_ts__extract_quarter + , subq_28.user__last_profile_edit_ts__extract_month + , subq_28.user__last_profile_edit_ts__extract_day + , subq_28.user__last_profile_edit_ts__extract_dow + , subq_28.user__last_profile_edit_ts__extract_doy + , subq_28.user__bio_added_ts__second + , subq_28.user__bio_added_ts__minute + , subq_28.user__bio_added_ts__hour + , subq_28.user__bio_added_ts__day + , subq_28.user__bio_added_ts__week + , subq_28.user__bio_added_ts__month + , subq_28.user__bio_added_ts__quarter + , subq_28.user__bio_added_ts__year + , subq_28.user__bio_added_ts__extract_year + , subq_28.user__bio_added_ts__extract_quarter + , subq_28.user__bio_added_ts__extract_month + , subq_28.user__bio_added_ts__extract_day + , subq_28.user__bio_added_ts__extract_dow + , subq_28.user__bio_added_ts__extract_doy + , subq_28.user__last_login_ts__minute + , subq_28.user__last_login_ts__hour + , subq_28.user__last_login_ts__day + , subq_28.user__last_login_ts__week + , subq_28.user__last_login_ts__month + , subq_28.user__last_login_ts__quarter + , subq_28.user__last_login_ts__year + , subq_28.user__last_login_ts__extract_year + , subq_28.user__last_login_ts__extract_quarter + , subq_28.user__last_login_ts__extract_month + , subq_28.user__last_login_ts__extract_day + , subq_28.user__last_login_ts__extract_dow + , subq_28.user__last_login_ts__extract_doy + , subq_28.user__archived_at__hour + , subq_28.user__archived_at__day + , subq_28.user__archived_at__week + , subq_28.user__archived_at__month + , subq_28.user__archived_at__quarter + , subq_28.user__archived_at__year + , subq_28.user__archived_at__extract_year + , subq_28.user__archived_at__extract_quarter + , subq_28.user__archived_at__extract_month + , subq_28.user__archived_at__extract_day + , subq_28.user__archived_at__extract_dow + , subq_28.user__archived_at__extract_doy + , subq_28.created_at__day AS metric_time__day + , subq_28.created_at__week AS metric_time__week + , subq_28.created_at__month AS metric_time__month + , subq_28.created_at__quarter AS metric_time__quarter + , subq_28.created_at__year AS metric_time__year + , subq_28.created_at__extract_year AS metric_time__extract_year + , subq_28.created_at__extract_quarter AS metric_time__extract_quarter + , subq_28.created_at__extract_month AS metric_time__extract_month + , subq_28.created_at__extract_day AS metric_time__extract_day + , subq_28.created_at__extract_dow AS metric_time__extract_dow + , subq_28.created_at__extract_doy AS metric_time__extract_doy + , subq_28.user + , subq_28.home_state + , subq_28.user__home_state + , subq_28.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1380,25 +1380,25 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_28 + ) subq_29 + ) subq_30 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_27.user = subq_30.user + ) subq_31 + ) subq_32 ON ( - subq_1.listing = subq_8.listing + subq_25.listing = subq_32.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_9 + ***************************.mf_time_spine subq_33 ON - subq_8.user__ds__day = subq_9.ds - ) subq_10 - ) subq_11 + subq_32.user__ds__day = subq_33.ds + ) subq_34 + ) subq_35 GROUP BY - subq_11.listing__user__ds__martian_day -) subq_12 + subq_35.listing__user__ds__martian_day +) subq_36 diff --git a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql index 0790d437ee..e6f49e7d58 100644 --- a/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_custom_granularity.py/SqlPlan/Trino/test_simple_metric_with_multi_hop_custom_granularity__plan0_optimized.sql @@ -10,8 +10,8 @@ sql_engine: Trino -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_22.martian_day AS listing__user__ds__martian_day - , SUM(subq_14.bookings) AS bookings + subq_46.martian_day AS listing__user__ds__martian_day + , SUM(subq_38.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -20,7 +20,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_14 +) subq_38 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__ds__day', 'listing'] @@ -33,16 +33,16 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_21 +) subq_45 ON ( - subq_14.listing = subq_21.listing + subq_38.listing = subq_45.listing ) AND ( - subq_14.ds_partitioned__day = subq_21.user__ds_partitioned__day + subq_38.ds_partitioned__day = subq_45.user__ds_partitioned__day ) LEFT OUTER JOIN - ***************************.mf_time_spine subq_22 + ***************************.mf_time_spine subq_46 ON - subq_21.user__ds__day = subq_22.ds + subq_45.user__ds__day = subq_46.ds GROUP BY - subq_22.martian_day + subq_46.martian_day diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index 9c1f270105..6bc882e511 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS FLOAT64) / CAST(NULLIF(subq_18.views, 0) AS FLOAT64) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS FLOAT64) / CAST(NULLIF(subq_17.views, 0) AS FLOAT64) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY ds__day , listing__country_latest - ) subq_16 - ) subq_17 + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY ds__day , listing__country_latest -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index dc98ebb10a..b4fd8162b1 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY ds__day , listing__country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY ds__day , listing__country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY ds__day , listing__country_latest -) subq_36 +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0.sql index 7a0419a8e0..b694659b3d 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: BigQuery -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0_optimized.sql index 2fced228ea..0c48d09ee8 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/BigQuery/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index 09731ba7a8..78b953b43b 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index 45487cf27c..a5aff06ee2 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0.sql index bbbb70a925..90ac83dc85 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: Databricks -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0_optimized.sql index e273012100..6f7acae5d1 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Databricks/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index ca6ccdb214..9de36dc07f 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE PRECISION) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE PRECISION) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index c8d146de34..fa79bd06c3 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0.sql index 7741bdb906..cedfde6fd4 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: Postgres -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0_optimized.sql index 0d42756ed6..38ed83e5a4 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Postgres/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index f10b7adfd8..19f26b0322 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE PRECISION) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE PRECISION) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE PRECISION) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE PRECISION) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index 3343128d76..a16bad5da4 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0.sql index dea4fd0baa..5e2be3973c 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: Redshift -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0_optimized.sql index 697433a5df..2cfde1c21d 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Redshift/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index 67f6a6c62e..5ba148535c 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index b14f947b5d..ab1296e860 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0.sql index 3f018a5ef4..7673d64a61 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: Snowflake -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0_optimized.sql index becffa2bd6..078055f988 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Snowflake/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql index 09a44d0663..18b1ec8ca2 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0.sql @@ -6,16 +6,16 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.ds__day - , subq_18.listing__country_latest - , CAST(subq_18.bookings AS DOUBLE) / CAST(NULLIF(subq_18.views, 0) AS DOUBLE) AS bookings_per_view + subq_17.ds__day + , subq_17.listing__country_latest + , CAST(subq_17.bookings AS DOUBLE) / CAST(NULLIF(subq_17.views, 0) AS DOUBLE) AS bookings_per_view FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.ds__day, subq_17.ds__day) AS ds__day - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) AS listing__country_latest + COALESCE(subq_8.ds__day, subq_16.ds__day) AS ds__day + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) AS listing__country_latest , MAX(subq_8.bookings) AS bookings - , MAX(subq_17.views) AS views + , MAX(subq_16.views) AS views FROM ( -- Compute Metrics via Expressions SELECT @@ -481,25 +481,25 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.ds__day - , subq_16.listing__country_latest - , subq_16.views + subq_15.ds__day + , subq_15.listing__country_latest + , subq_15.views FROM ( -- Aggregate Measures SELECT - subq_15.ds__day - , subq_15.listing__country_latest - , SUM(subq_15.views) AS views + subq_14.ds__day + , subq_14.listing__country_latest + , SUM(subq_14.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] SELECT - subq_14.ds__day - , subq_14.listing__country_latest - , subq_14.views + subq_13.ds__day + , subq_13.listing__country_latest + , subq_13.views FROM ( -- Join Standard Outputs SELECT - subq_13.country_latest AS listing__country_latest + subq_12.country_latest AS listing__country_latest , subq_10.ds__day AS ds__day , subq_10.ds__week AS ds__week , subq_10.ds__month AS ds__month @@ -681,78 +681,78 @@ FROM ( LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_12.listing - , subq_12.country_latest + subq_11.listing + , subq_11.country_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.created_at__day - , subq_11.created_at__week - , subq_11.created_at__month - , subq_11.created_at__quarter - , subq_11.created_at__year - , subq_11.created_at__extract_year - , subq_11.created_at__extract_quarter - , subq_11.created_at__extract_month - , subq_11.created_at__extract_day - , subq_11.created_at__extract_dow - , subq_11.created_at__extract_doy - , subq_11.listing__ds__day - , subq_11.listing__ds__week - , subq_11.listing__ds__month - , subq_11.listing__ds__quarter - , subq_11.listing__ds__year - , subq_11.listing__ds__extract_year - , subq_11.listing__ds__extract_quarter - , subq_11.listing__ds__extract_month - , subq_11.listing__ds__extract_day - , subq_11.listing__ds__extract_dow - , subq_11.listing__ds__extract_doy - , subq_11.listing__created_at__day - , subq_11.listing__created_at__week - , subq_11.listing__created_at__month - , subq_11.listing__created_at__quarter - , subq_11.listing__created_at__year - , subq_11.listing__created_at__extract_year - , subq_11.listing__created_at__extract_quarter - , subq_11.listing__created_at__extract_month - , subq_11.listing__created_at__extract_day - , subq_11.listing__created_at__extract_dow - , subq_11.listing__created_at__extract_doy - , subq_11.ds__day AS metric_time__day - , subq_11.ds__week AS metric_time__week - , subq_11.ds__month AS metric_time__month - , subq_11.ds__quarter AS metric_time__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year AS metric_time__extract_year - , subq_11.ds__extract_quarter AS metric_time__extract_quarter - , subq_11.ds__extract_month AS metric_time__extract_month - , subq_11.ds__extract_day AS metric_time__extract_day - , subq_11.ds__extract_dow AS metric_time__extract_dow - , subq_11.ds__extract_doy AS metric_time__extract_doy - , subq_11.listing - , subq_11.user - , subq_11.listing__user - , subq_11.country_latest - , subq_11.is_lux_latest - , subq_11.capacity_latest - , subq_11.listing__country_latest - , subq_11.listing__is_lux_latest - , subq_11.listing__capacity_latest - , subq_11.listings - , subq_11.largest_listing - , subq_11.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -813,25 +813,25 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_10.listing = subq_13.listing - ) subq_14 - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 + ) subq_14 GROUP BY - subq_15.ds__day - , subq_15.listing__country_latest - ) subq_16 - ) subq_17 + subq_14.ds__day + , subq_14.listing__country_latest + ) subq_15 + ) subq_16 ON ( - subq_8.listing__country_latest = subq_17.listing__country_latest + subq_8.listing__country_latest = subq_16.listing__country_latest ) AND ( - subq_8.ds__day = subq_17.ds__day + subq_8.ds__day = subq_16.ds__day ) GROUP BY - COALESCE(subq_8.ds__day, subq_17.ds__day) - , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) -) subq_18 + COALESCE(subq_8.ds__day, subq_16.ds__day) + , COALESCE(subq_8.listing__country_latest, subq_16.listing__country_latest) +) subq_17 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql index 84c74729c8..2100ef97e1 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_compute_metrics_node_ratio_from_multiple_semantic_models__plan0_optimized.sql @@ -21,19 +21,19 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.ds__day, subq_35.ds__day) AS ds__day - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest - , MAX(subq_27.bookings) AS bookings - , MAX(subq_35.views) AS views + COALESCE(subq_26.ds__day, subq_34.ds__day) AS ds__day + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_34.views) AS views FROM ( -- Join Standard Outputs -- Pass Only Elements: ['bookings', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.ds__day AS ds__day + subq_19.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_20.bookings) AS bookings + , SUM(subq_19.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -42,24 +42,24 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 + ) subq_19 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_20.listing = sma_28014_cte.listing + subq_19.listing = sma_28014_cte.listing GROUP BY - subq_20.ds__day + subq_19.ds__day , sma_28014_cte.country_latest - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['views', 'listing__country_latest', 'ds__day'] -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_29.ds__day AS ds__day + subq_28.ds__day AS ds__day , sma_28014_cte.country_latest AS listing__country_latest - , SUM(subq_29.views) AS views + , SUM(subq_28.views) AS views FROM ( -- Read Elements From Semantic Model 'views_source' -- Metric Time Dimension 'ds' @@ -68,22 +68,22 @@ FROM ( , listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_29 + ) subq_28 LEFT OUTER JOIN sma_28014_cte sma_28014_cte ON - subq_29.listing = sma_28014_cte.listing + subq_28.listing = sma_28014_cte.listing GROUP BY - subq_29.ds__day + subq_28.ds__day , sma_28014_cte.country_latest - ) subq_35 + ) subq_34 ON ( - subq_27.listing__country_latest = subq_35.listing__country_latest + subq_26.listing__country_latest = subq_34.listing__country_latest ) AND ( - subq_27.ds__day = subq_35.ds__day + subq_26.ds__day = subq_34.ds__day ) GROUP BY - COALESCE(subq_27.ds__day, subq_35.ds__day) - , COALESCE(subq_27.listing__country_latest, subq_35.listing__country_latest) -) subq_36 + COALESCE(subq_26.ds__day, subq_34.ds__day) + , COALESCE(subq_26.listing__country_latest, subq_34.listing__country_latest) +) subq_35 diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0.sql index aeda44bf06..ab6db9b382 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0.sql @@ -7,7 +7,7 @@ sql_engine: Trino -- Join Standard Outputs SELECT subq_3.country_latest AS listing__country_latest - , subq_5.country_latest AS listing__country_latest + , subq_4.country_latest AS listing__country_latest , subq_1.listing AS listing , subq_1.bookings AS bookings FROM ( @@ -181,8 +181,8 @@ ON LEFT OUTER JOIN ( -- Pass Only Elements: ['country_latest', 'listing'] SELECT - subq_4.listing - , subq_4.country_latest + subq_2.listing + , subq_2.country_latest FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -243,7 +243,7 @@ LEFT OUTER JOIN ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 -) subq_5 + ) subq_2 +) subq_4 ON - subq_1.listing = subq_5.listing + subq_1.listing = subq_4.listing diff --git a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0_optimized.sql b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0_optimized.sql index a49173cc21..299d5267ef 100644 --- a/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_dataflow_to_sql_plan.py/SqlPlan/Trino/test_multi_join_node__plan0_optimized.sql @@ -15,10 +15,10 @@ WITH pfe_1_cte AS ( ) SELECT - subq_9.country_latest AS listing__country_latest - , subq_10.country_latest AS listing__country_latest - , subq_7.listing AS listing - , subq_7.bookings AS bookings + subq_8.country_latest AS listing__country_latest + , subq_9.country_latest AS listing__country_latest + , subq_6.listing AS listing + , subq_6.bookings AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Pass Only Elements: ['bookings', 'listing'] @@ -26,22 +26,22 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_7 +) subq_6 LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_9 +) subq_8 ON - subq_7.listing = subq_9.listing + subq_6.listing = subq_8.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=pfe_1 SELECT listing , country_latest FROM pfe_1_cte pfe_1_cte -) subq_10 +) subq_9 ON - subq_7.listing = subq_10.listing + subq_6.listing = subq_9.listing diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0.sql index 091ef8f00a..5aa28a6d21 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY metric_time__day - ) subq_8 - ) subq_9 + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY metric_time__day -) subq_10 +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0_optimized.sql index b50107ee67..520441a57f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index c2f3589a88..acae6a30da 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: BigQuery --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY booking__is_instant -) subq_12 +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 6dc4d6f2b8..caa7ac7dee 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY booking__is_instant LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql index a38a611eaf..2f909c4c5d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATETIME_TRUNC(subq_9.metric_time__day, month) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATETIME_TRUNC(subq_8.metric_time__day, month) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY metric_time__day - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY metric_time__day -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index 9ba7a69cbb..691dcef45c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATETIME_TRUNC(time_spine_src_28006.ds, month) = sma_28009_cte.metric_time__day GROUP BY metric_time__day - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY metric_time__day -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index ee80ee1fe8..4cf625165d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATETIME_TRUNC(subq_9.metric_time__day, month) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATETIME_TRUNC(subq_8.metric_time__day, month) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY metric_time__week - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY metric_time__week -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index eff245bd90..b443158c18 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) = time_spine_src_28006.ds GROUP BY metric_time__week - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY metric_time__week -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql index 1f5d56096a..2936fa3372 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY metric_time__day - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY metric_time__day -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql index bbbb66e301..f460d51ecd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 14 day) = sma_28009_cte.metric_time__day GROUP BY metric_time__day - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY metric_time__day -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql index 0dd992d186..831a31155d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY metric_time__quarter - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY metric_time__quarter -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index 0ebcc74ed3..1b660fd952 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 14 day) = sma_28009_cte.metric_time__day GROUP BY metric_time__quarter - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY metric_time__quarter -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index 42d69d60a6..67f3678959 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 1 month) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 1 month) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY metric_time__day - ) subq_16 - ) subq_17 + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY metric_time__day -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index 2484f394e9..cb3118e9ee 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATETIME_TRUNC(rss_28018_cte.ds__day, month) = sma_28009_cte.metric_time__day GROUP BY metric_time__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( DATE_SUB(CAST(rss_28018_cte.ds__day AS DATETIME), INTERVAL 1 month) = sma_28009_cte.metric_time__day GROUP BY metric_time__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY metric_time__day -) subq_36 +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index b26c3e02c8..22197372dd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 1 month) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 1 month) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY metric_time__year - ) subq_16 - ) subq_17 + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY metric_time__year -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index a6480c552a..f2dfd0b7fa 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY metric_time__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( DATE_SUB(CAST(rss_28018_cte.ds__day AS DATETIME), INTERVAL 1 month) = sma_28009_cte.metric_time__day GROUP BY metric_time__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY metric_time__year -) subq_36 +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 8c07c69765..156407ab91 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - DATE_SUB(CAST(subq_10.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_7.metric_time__day - ) subq_11 + DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY metric_time__day - ) subq_14 - ) subq_15 + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY metric_time__day -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index 1413f00213..88d04f09da 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 14 day) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY metric_time__day -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 2df6adaf33..cd8e28f702 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY booking__ds__day - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY booking__ds__day -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index da48a3c1ea..8767926ba9 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 1 week) = sma_28009_cte.booking__ds__day GROUP BY booking__ds__day - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY booking__ds__day -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0.sql index 0d1f2377f7..311f7b6ff5 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY metric_time__day - ) subq_8 - ) subq_9 + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY metric_time__day - ) subq_10 - ) subq_11 + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY metric_time__day - ) subq_15 - ) subq_16 + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY metric_time__day - ) subq_20 - ) subq_21 + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY metric_time__day -) subq_22 +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql index c377f1c476..c26d177c72 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY metric_time__day -) subq_34 +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 4ae3180a0d..6b4a5570c2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY metric_time__day -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index cac36acca2..aed8fe248e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATETIME_TRUNC(time_spine_src_28006.ds, month) = subq_22.metric_time__day - ) subq_26 + DATETIME_TRUNC(time_spine_src_28006.ds, month) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY metric_time__day -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0.sql index a0903cae8a..b89fd547d4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0_optimized.sql index 0ba29d9919..d00e71b7d3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql index 1aa7e5a9f0..f2c57ddf95 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATETIME_TRUNC(subq_9.booking__ds__day, month) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATETIME_TRUNC(subq_8.booking__ds__day, month) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY booking__ds__day - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY booking__ds__day -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index 04c2e5d83f..ab1bc91a83 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATETIME_TRUNC(time_spine_src_28006.ds, month) = sma_28009_cte.booking__ds__day GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY booking__ds__day -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 2f470eb5be..30754e39e6 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY metric_time__month - ) subq_14 - ) subq_15 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY metric_time__month -) subq_16 +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index 9060665350..e45236305a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 1 week) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY metric_time__month -) subq_32 +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql index 3e7d3d1cb9..33375ae0a2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY metric_time__day , metric_time__month , metric_time__year - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY metric_time__day , metric_time__month , metric_time__year -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index b731bb23ed..e49147874f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY metric_time__day , metric_time__month , metric_time__year -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql index 5e1127a68a..d81af9ae4d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_SUB(CAST(subq_9.booking__ds__day AS DATETIME), INTERVAL 14 day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_SUB(CAST(subq_8.booking__ds__day AS DATETIME), INTERVAL 14 day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY booking__ds__day - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY booking__ds__day -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql index 6e2ebe8a48..8a33d45182 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/BigQuery/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 14 day) = sma_28009_cte.booking__ds__day GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY booking__ds__day -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0.sql index 31514a5363..22e94a5e28 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0_optimized.sql index a8fb9b7986..c87faa9997 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index ba5372498c..d2e96c3eb3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: Databricks --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index b306007c1d..222d678d14 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql index c67c6a5c85..b05de1def0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index e4fa30e706..79a00a40ba 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index 0646550e61..db09c694a3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index 2e6fe8e65a..fa99f1c334 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql index d4c94cd60d..e0d06bd0d8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql index 3bc8c7be7c..a839bcdcbd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql index 4c428b0c1c..1431c1ad7e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index d4f50ad76a..fddc533ece 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index ebf68ed523..d496b4ae02 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index 208d1e0e55..151ac5cba1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index c16b58013e..98cd43edc3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index 355d59fdd4..d2212e1797 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 9d6c4095db..a5d4cbf2b2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - DATEADD(day, -14, subq_10.metric_time__day) = subq_7.metric_time__day - ) subq_11 + DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index 829bffa770..6b45a3c4ae 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 04e757d55e..32dc9bbe00 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index 18ee936e10..13c2e36333 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0.sql index 1b46541f03..812c8fbe08 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql index 25edde45c3..bd446b8686 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 2d75a3cc8e..3f73308ae7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index 60fce52c03..b472794b00 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0.sql index 21cc776e3d..7c5da69276 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0_optimized.sql index 1e23fe4060..19c15bda84 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql index e1ce0d8e9d..765c242afe 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index bec04eaa93..7f6c7d49f0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 5ecb1cc8db..098c2c7b84 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index 307567bdb9..89b8a9097a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql index 720098b16d..d4b88f5ce2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index 3851699161..9261191774 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql index 9e9286ba53..54f2899515 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql index c0b4d9a537..327a48023e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Databricks/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0.sql index acc1275b34..0c64c95a3f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0_optimized.sql index d5922afa29..0028dddc8d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index c14ffef43d..6f4365ed0c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: Postgres --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 5dce385c65..d7a8cbfff4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql index e5543a483c..c0289d996b 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index 1c74ca5b3f..2ae3577601 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index 6fb728b248..cde51e250d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index ce8ed36fb8..a0e7acccec 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql index c8cf649ea1..2f7e4314c8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - MAKE_INTERVAL(days => 14) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - MAKE_INTERVAL(days => 14) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql index 019512ce5e..da1a53ea2c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( time_spine_src_28006.ds - MAKE_INTERVAL(days => 14) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql index c3c4268853..93443cadfd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - MAKE_INTERVAL(days => 14) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - MAKE_INTERVAL(days => 14) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index 6cc4f03ebc..f40dbf8538 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( time_spine_src_28006.ds - MAKE_INTERVAL(days => 14) = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index 0d57b3f283..50fc973905 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - MAKE_INTERVAL(months => 1) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - MAKE_INTERVAL(months => 1) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index a8f86c1b55..a6ecf4363e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( rss_28018_cte.ds__day - MAKE_INTERVAL(months => 1) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index b7afe2ec35..855649a406 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - MAKE_INTERVAL(months => 1) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - MAKE_INTERVAL(months => 1) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index eed16fab47..1eaf538b61 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( rss_28018_cte.ds__day - MAKE_INTERVAL(months => 1) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 04d8b360d5..bd0716edc1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - subq_10.metric_time__day - MAKE_INTERVAL(days => 14) = subq_7.metric_time__day - ) subq_11 + subq_9.metric_time__day - MAKE_INTERVAL(days => 14) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index 9f517cdd70..4662b448a7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON time_spine_src_28006.ds - MAKE_INTERVAL(days => 14) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 13c11ef0e3..7666b2e8f7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index 9ac8ac6276..df7801d256 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( time_spine_src_28006.ds - MAKE_INTERVAL(weeks => 1) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0.sql index bd680e56a1..fd844cf9d2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql index a34abf65ef..102d33420a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 763de41e1f..f21543003f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index fed8434e09..9c5784eee0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0.sql index b013a56aca..2541c01aa8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0_optimized.sql index 1f99c4edaa..ffa31bf978 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql index a7ded6e130..76d4234f72 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index 526dbc930b..a6ebf80f45 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 503af1513d..9544ad9a0f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index dba9c4ca1a..7afc655f73 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON time_spine_src_28006.ds - MAKE_INTERVAL(weeks => 1) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql index 041a89b4fb..01216b6d17 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index de3f2029cb..74be247156 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql index e9124b7413..56ac3ee073 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.booking__ds__day - MAKE_INTERVAL(days => 14) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + subq_8.booking__ds__day - MAKE_INTERVAL(days => 14) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql index 3fd3f64e44..0c8c6186a2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Postgres/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( time_spine_src_28006.ds - MAKE_INTERVAL(days => 14) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0.sql index ba1b126c89..257a8899bf 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0_optimized.sql index 49941151dd..7127bfea13 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index adfe74e8ac..0147e27ae4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: Redshift --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 4793688e20..4c2dffefae 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql index 3fa2a56e64..cb136df293 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index 2e88e5a864..253ef62e16 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index d0a900193b..42cda10bf6 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index 9c7edcc6d1..48f191cbb0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql index 9de25c4f3b..ee94869305 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql index 34ca661d00..5c31d0f35b 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql index 9086282551..f2945db9bf 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index 9df328ed23..7f584c6bca 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index a20881bc63..e0afeb0ad2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index 4959d9f2e3..72a24ad7cf 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index c15c77be1c..46ebc57a98 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index 3e2075160e..71f277f6da 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 7cd5996d9e..cd0faa42ae 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - DATEADD(day, -14, subq_10.metric_time__day) = subq_7.metric_time__day - ) subq_11 + DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index 3c24edc18a..6eace5b2d7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 963c9dda70..02a9c7cdf1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index 89ce2d6e3b..26273bf17d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0.sql index 80572c96cd..4d46b87792 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql index 626212607e..26eb64dd75 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 0f7a24e815..42ca1d411f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index 65b8e0609b..ed8a43a247 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0.sql index ad66b7757a..3e241cffce 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0_optimized.sql index 0cb09da107..70e8de4ecd 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql index ad6ee66e71..ddd5765176 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index 7c08b120ba..196c2d9660 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index d160be0a0e..396bb3c6c5 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index c48e421b37..9feffd1172 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql index 0f323421f7..4b640e5ba4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index f00e5ec515..373bf4066a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql index 35c003016f..5badce78bb 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql index dce7a889cf..1923fdfa07 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Redshift/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0.sql index d2181c82f1..376287c06e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0_optimized.sql index bafa9600fa..e06863751c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index 7fcc8718d4..2331669d28 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: Snowflake --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 69c2465d20..c452bdcad9 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql index 52a1b8ee48..1c7ecf9901 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index 2eccdc3199..b39c0e2247 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index eee319b3e3..00f2915fad 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index 315b9b2b3c..e15d347313 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql index 0677d387d8..935ae28a82 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql index 5d00cceac5..67d2013197 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql index 3a4255536d..a84531ec6d 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index 53db40714a..54ba809962 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index 757b35d26c..0879910f85 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index 1d48535d3c..81ec8b1581 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index fcf7ce205b..1b349ccd6f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(month, -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(month, -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index e3b8257ea7..c9aad10e0a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( DATEADD(month, -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 57e90638c0..d926420af2 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - DATEADD(day, -14, subq_10.metric_time__day) = subq_7.metric_time__day - ) subq_11 + DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index b777d29834..ab295ef2b4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 5473715eaf..72530edfff 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index 17ffeec7dc..dcb2368923 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0.sql index cf32aae532..94a521f028 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql index f48b4f9097..1f35b9534f 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 5438bde9cc..5e603c3bd0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index 080c3fc4bf..dffa8e0bbe 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0.sql index a1e115cd89..ff5a1ae7b1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0_optimized.sql index c070ddafdf..2456388e82 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql index a05cb1c721..14e85b2963 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index b327593717..d07a184ba4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 20bc66e61a..f9cbd3150a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index 20e23e210d..e6d1f3dec5 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON DATEADD(week, -1, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql index 15cc9000a6..4613d3e984 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index 81e8a53514..f9d7f8ae56 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql index 6d10916483..3fbcf5bd15 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql index 8b86124ed7..bf0ae5a29c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Snowflake/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0.sql index b8eea3fa9b..dcaac15ff0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -230,119 +230,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -435,15 +435,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) -) subq_10 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) +) subq_9 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0_optimized.sql index 3521bdd8f5..8f00f44490 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric__plan0_optimized.sql @@ -22,7 +22,7 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_13 + ) subq_12 GROUP BY metric_time__day -) subq_15 +) subq_14 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql index 6a397b5c1e..9bf7da8de7 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0.sql @@ -6,15 +6,15 @@ sql_engine: Trino --- -- Order By [] Limit 1 SELECT - subq_12.booking__is_instant - , subq_12.derived_shared_alias_1a - , subq_12.derived_shared_alias_2 + subq_11.booking__is_instant + , subq_11.derived_shared_alias_1a + , subq_11.derived_shared_alias_2 FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) AS booking__is_instant + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) AS booking__is_instant , MAX(subq_5.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_11.derived_shared_alias_2) AS derived_shared_alias_2 + , MAX(subq_10.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -239,124 +239,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.booking__is_instant + subq_9.booking__is_instant , shared_alias + 10 AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT - subq_9.booking__is_instant - , subq_9.instant_bookings AS shared_alias + subq_8.booking__is_instant + , subq_8.instant_bookings AS shared_alias FROM ( -- Aggregate Measures SELECT - subq_8.booking__is_instant - , SUM(subq_8.instant_bookings) AS instant_bookings + subq_7.booking__is_instant + , SUM(subq_7.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'booking__is_instant'] SELECT - subq_7.booking__is_instant - , subq_7.instant_bookings + subq_6.booking__is_instant + , subq_6.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -449,17 +449,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_0 + ) subq_6 + ) subq_7 GROUP BY - subq_8.booking__is_instant - ) subq_9 - ) subq_10 - ) subq_11 + subq_7.booking__is_instant + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_5.booking__is_instant = subq_11.booking__is_instant + subq_5.booking__is_instant = subq_10.booking__is_instant GROUP BY - COALESCE(subq_5.booking__is_instant, subq_11.booking__is_instant) -) subq_12 + COALESCE(subq_5.booking__is_instant, subq_10.booking__is_instant) +) subq_11 LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql index 46d5076f71..704d2bdbec 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_that_defines_the_same_alias_in_different_components__plan0_optimized.sql @@ -17,9 +17,9 @@ WITH sma_28009_cte AS ( ) SELECT - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) AS booking__is_instant - , MAX(subq_18.derived_shared_alias_1a) AS derived_shared_alias_1a - , MAX(subq_23.derived_shared_alias_2) AS derived_shared_alias_2 + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) AS booking__is_instant + , MAX(subq_17.derived_shared_alias_1a) AS derived_shared_alias_1a + , MAX(subq_22.derived_shared_alias_2) AS derived_shared_alias_2 FROM ( -- Compute Metrics via Expressions SELECT @@ -36,8 +36,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_17 -) subq_18 + ) subq_16 +) subq_17 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -54,10 +54,10 @@ FULL OUTER JOIN ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__is_instant - ) subq_22 -) subq_23 + ) subq_21 +) subq_22 ON - subq_18.booking__is_instant = subq_23.booking__is_instant + subq_17.booking__is_instant = subq_22.booking__is_instant GROUP BY - COALESCE(subq_18.booking__is_instant, subq_23.booking__is_instant) + COALESCE(subq_17.booking__is_instant, subq_22.booking__is_instant) LIMIT 1 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql index 1cb7d5721a..ce5ab1cfc6 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql index cbd7207967..757eba2fa8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql index 7fbd27a3e2..7bb83759ac 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__week + subq_13.metric_time__week , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) AS metric_time__week + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) AS metric_time__week , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__week - , subq_12.bookings AS bookings_at_start_of_month + subq_11.metric_time__week + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__week - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__week + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__week'] SELECT - subq_10.metric_time__week - , subq_10.bookings + subq_9.metric_time__week + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__week AS metric_time__week - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__week AS metric_time__week + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__week'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week + subq_7.metric_time__day + , subq_7.metric_time__week FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,19 +575,19 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.metric_time__day) = subq_6.metric_time__day - WHERE subq_9.metric_time__week = subq_9.metric_time__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.metric_time__day) = subq_5.metric_time__day + WHERE subq_8.metric_time__week = subq_8.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__week - ) subq_12 - ) subq_13 + subq_10.metric_time__week + ) subq_11 + ) subq_12 ON - subq_4.metric_time__week = subq_13.metric_time__week + subq_4.metric_time__week = subq_12.metric_time__week GROUP BY - COALESCE(subq_4.metric_time__week, subq_13.metric_time__week) -) subq_14 + COALESCE(subq_4.metric_time__week, subq_12.metric_time__week) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql index c93b22d6c9..f201bf01e1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_to_grain_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) AS metric_time__week - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) AS metric_time__week + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__week - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__week'] @@ -50,9 +50,9 @@ FROM ( WHERE DATE_TRUNC('week', time_spine_src_28006.ds) = time_spine_src_28006.ds GROUP BY DATE_TRUNC('week', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__week = subq_27.metric_time__week + subq_18.metric_time__week = subq_26.metric_time__week GROUP BY - COALESCE(subq_19.metric_time__week, subq_27.metric_time__week) -) subq_28 + COALESCE(subq_18.metric_time__week, subq_26.metric_time__week) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0.sql index 400a007120..4c7650fe42 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) AS metric_time__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_10.metric_time__day - , subq_10.bookings + subq_9.metric_time__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_8.metric_time__day + subq_7.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_ADD('day', -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_ADD('day', -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - ) subq_12 - ) subq_13 + subq_10.metric_time__day + ) subq_11 + ) subq_12 ON - subq_4.metric_time__day = subq_13.metric_time__day + subq_4.metric_time__day = subq_12.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_13.metric_time__day) -) subq_14 + COALESCE(subq_4.metric_time__day, subq_12.metric_time__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql index 15b7c593ab..684a76e191 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -48,9 +48,9 @@ FROM ( DATE_ADD('day', -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.metric_time__day = subq_27.metric_time__day + subq_18.metric_time__day = subq_26.metric_time__day GROUP BY - COALESCE(subq_19.metric_time__day, subq_27.metric_time__day) -) subq_28 + COALESCE(subq_18.metric_time__day, subq_26.metric_time__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql index 677524356e..184d90cea0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__quarter + subq_13.metric_time__quarter , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) AS metric_time__quarter + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) AS metric_time__quarter , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__quarter - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__quarter + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__quarter - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__quarter + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__quarter'] SELECT - subq_10.metric_time__quarter - , subq_10.bookings + subq_9.metric_time__quarter + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__quarter AS metric_time__quarter - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__quarter AS metric_time__quarter + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__quarter'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__quarter + subq_7.metric_time__day + , subq_7.metric_time__quarter FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_ADD('day', -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_ADD('day', -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__quarter - ) subq_12 - ) subq_13 + subq_10.metric_time__quarter + ) subq_11 + ) subq_12 ON - subq_4.metric_time__quarter = subq_13.metric_time__quarter + subq_4.metric_time__quarter = subq_12.metric_time__quarter GROUP BY - COALESCE(subq_4.metric_time__quarter, subq_13.metric_time__quarter) -) subq_14 + COALESCE(subq_4.metric_time__quarter, subq_12.metric_time__quarter) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql index 1aed0092c1..21fa7b4903 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_granularity__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) AS metric_time__quarter - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) AS metric_time__quarter + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__quarter - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__quarter'] @@ -49,9 +49,9 @@ FROM ( DATE_ADD('day', -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY DATE_TRUNC('quarter', time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__quarter = subq_27.metric_time__quarter + subq_18.metric_time__quarter = subq_26.metric_time__quarter GROUP BY - COALESCE(subq_19.metric_time__quarter, subq_27.metric_time__quarter) -) subq_28 + COALESCE(subq_18.metric_time__quarter, subq_26.metric_time__quarter) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql index e41f781ad3..e84001b21c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -372,138 +372,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -520,110 +520,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -716,18 +716,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_ADD('month', -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_ADD('month', -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql index b975395437..a35f01c922 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -43,7 +43,7 @@ FROM ( DATE_TRUNC('month', rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -59,9 +59,9 @@ FROM ( DATE_ADD('month', -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql index 3b4dea5ae2..5e12e1e8ca 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__year + subq_17.metric_time__year , month_start_bookings - bookings_1_month_ago AS bookings_month_start_compared_to_1_month_prior FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) AS metric_time__year , MAX(subq_8.month_start_bookings) AS month_start_bookings - , MAX(subq_17.bookings_1_month_ago) AS bookings_1_month_ago + , MAX(subq_16.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -374,139 +374,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__year - , subq_16.bookings AS bookings_1_month_ago + subq_15.metric_time__year + , subq_15.bookings AS bookings_1_month_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__year - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__year + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__year'] SELECT - subq_14.metric_time__year - , subq_14.bookings + subq_13.metric_time__year + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_13.metric_time__year AS metric_time__year - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__year AS metric_time__year + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__year'] SELECT - subq_12.metric_time__day - , subq_12.metric_time__year + subq_11.metric_time__day + , subq_11.metric_time__year FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year AS metric_time__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year AS metric_time__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -523,110 +523,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -719,18 +719,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_ADD('month', -1, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_ADD('month', -1, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__year - ) subq_16 - ) subq_17 + subq_14.metric_time__year + ) subq_15 + ) subq_16 ON - subq_8.metric_time__year = subq_17.metric_time__year + subq_8.metric_time__year = subq_16.metric_time__year GROUP BY - COALESCE(subq_8.metric_time__year, subq_17.metric_time__year) -) subq_18 + COALESCE(subq_8.metric_time__year, subq_16.metric_time__year) +) subq_17 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql index 875e4ca7f2..c2bbd0cdc1 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_offset_to_grain_and_granularity__plan0_optimized.sql @@ -26,9 +26,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) AS metric_time__year - , MAX(subq_27.month_start_bookings) AS month_start_bookings - , MAX(subq_35.bookings_1_month_ago) AS bookings_1_month_ago + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) AS metric_time__year + , MAX(subq_26.month_start_bookings) AS month_start_bookings + , MAX(subq_34.bookings_1_month_ago) AS bookings_1_month_ago FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -45,7 +45,7 @@ FROM ( WHERE rss_28018_cte.ds__year = rss_28018_cte.ds__day GROUP BY rss_28018_cte.ds__year - ) subq_27 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__year'] @@ -61,9 +61,9 @@ FROM ( DATE_ADD('month', -1, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__year - ) subq_35 + ) subq_34 ON - subq_27.metric_time__year = subq_35.metric_time__year + subq_26.metric_time__year = subq_34.metric_time__year GROUP BY - COALESCE(subq_27.metric_time__year, subq_35.metric_time__year) -) subq_36 + COALESCE(subq_26.metric_time__year, subq_34.metric_time__year) +) subq_35 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql index 0da05859b4..e9dcb18c0c 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_5.bookings) AS bookings - , MAX(subq_15.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_14.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -333,239 +333,239 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.bookings AS bookings_2_weeks_ago + subq_13.metric_time__day + , subq_13.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__day - , SUM(subq_13.bookings) AS bookings + subq_12.metric_time__day + , SUM(subq_12.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_12.metric_time__day - , subq_12.bookings + subq_11.metric_time__day + , subq_11.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.metric_time__day - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.metric_time__day + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_7.ds__day AS ds__day - , subq_7.ds__week AS ds__week - , subq_7.ds__month AS ds__month - , subq_7.ds__quarter AS ds__quarter - , subq_7.ds__year AS ds__year - , subq_7.ds__extract_year AS ds__extract_year - , subq_7.ds__extract_quarter AS ds__extract_quarter - , subq_7.ds__extract_month AS ds__extract_month - , subq_7.ds__extract_day AS ds__extract_day - , subq_7.ds__extract_dow AS ds__extract_dow - , subq_7.ds__extract_doy AS ds__extract_doy - , subq_7.ds_partitioned__day AS ds_partitioned__day - , subq_7.ds_partitioned__week AS ds_partitioned__week - , subq_7.ds_partitioned__month AS ds_partitioned__month - , subq_7.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_7.ds_partitioned__year AS ds_partitioned__year - , subq_7.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_7.paid_at__day AS paid_at__day - , subq_7.paid_at__week AS paid_at__week - , subq_7.paid_at__month AS paid_at__month - , subq_7.paid_at__quarter AS paid_at__quarter - , subq_7.paid_at__year AS paid_at__year - , subq_7.paid_at__extract_year AS paid_at__extract_year - , subq_7.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_7.paid_at__extract_month AS paid_at__extract_month - , subq_7.paid_at__extract_day AS paid_at__extract_day - , subq_7.paid_at__extract_dow AS paid_at__extract_dow - , subq_7.paid_at__extract_doy AS paid_at__extract_doy - , subq_7.booking__ds__day AS booking__ds__day - , subq_7.booking__ds__week AS booking__ds__week - , subq_7.booking__ds__month AS booking__ds__month - , subq_7.booking__ds__quarter AS booking__ds__quarter - , subq_7.booking__ds__year AS booking__ds__year - , subq_7.booking__ds__extract_year AS booking__ds__extract_year - , subq_7.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_7.booking__ds__extract_month AS booking__ds__extract_month - , subq_7.booking__ds__extract_day AS booking__ds__extract_day - , subq_7.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_7.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day AS booking__paid_at__day - , subq_7.booking__paid_at__week AS booking__paid_at__week - , subq_7.booking__paid_at__month AS booking__paid_at__month - , subq_7.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_7.booking__paid_at__year AS booking__paid_at__year - , subq_7.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_7.metric_time__week AS metric_time__week - , subq_7.metric_time__month AS metric_time__month - , subq_7.metric_time__quarter AS metric_time__quarter - , subq_7.metric_time__year AS metric_time__year - , subq_7.metric_time__extract_year AS metric_time__extract_year - , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_7.metric_time__extract_month AS metric_time__extract_month - , subq_7.metric_time__extract_day AS metric_time__extract_day - , subq_7.metric_time__extract_dow AS metric_time__extract_dow - , subq_7.metric_time__extract_doy AS metric_time__extract_doy - , subq_7.listing AS listing - , subq_7.guest AS guest - , subq_7.host AS host - , subq_7.booking__listing AS booking__listing - , subq_7.booking__guest AS booking__guest - , subq_7.booking__host AS booking__host - , subq_7.is_instant AS is_instant - , subq_7.booking__is_instant AS booking__is_instant - , subq_7.bookings AS bookings - , subq_7.instant_bookings AS instant_bookings - , subq_7.booking_value AS booking_value - , subq_7.max_booking_value AS max_booking_value - , subq_7.min_booking_value AS min_booking_value - , subq_7.bookers AS bookers - , subq_7.average_booking_value AS average_booking_value - , subq_7.referred_bookings AS referred_bookings - , subq_7.median_booking_value AS median_booking_value - , subq_7.booking_value_p99 AS booking_value_p99 - , subq_7.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.metric_time__day AS metric_time__day + , subq_6.ds__day AS ds__day + , subq_6.ds__week AS ds__week + , subq_6.ds__month AS ds__month + , subq_6.ds__quarter AS ds__quarter + , subq_6.ds__year AS ds__year + , subq_6.ds__extract_year AS ds__extract_year + , subq_6.ds__extract_quarter AS ds__extract_quarter + , subq_6.ds__extract_month AS ds__extract_month + , subq_6.ds__extract_day AS ds__extract_day + , subq_6.ds__extract_dow AS ds__extract_dow + , subq_6.ds__extract_doy AS ds__extract_doy + , subq_6.ds_partitioned__day AS ds_partitioned__day + , subq_6.ds_partitioned__week AS ds_partitioned__week + , subq_6.ds_partitioned__month AS ds_partitioned__month + , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_6.ds_partitioned__year AS ds_partitioned__year + , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_6.paid_at__day AS paid_at__day + , subq_6.paid_at__week AS paid_at__week + , subq_6.paid_at__month AS paid_at__month + , subq_6.paid_at__quarter AS paid_at__quarter + , subq_6.paid_at__year AS paid_at__year + , subq_6.paid_at__extract_year AS paid_at__extract_year + , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_6.paid_at__extract_month AS paid_at__extract_month + , subq_6.paid_at__extract_day AS paid_at__extract_day + , subq_6.paid_at__extract_dow AS paid_at__extract_dow + , subq_6.paid_at__extract_doy AS paid_at__extract_doy + , subq_6.booking__ds__day AS booking__ds__day + , subq_6.booking__ds__week AS booking__ds__week + , subq_6.booking__ds__month AS booking__ds__month + , subq_6.booking__ds__quarter AS booking__ds__quarter + , subq_6.booking__ds__year AS booking__ds__year + , subq_6.booking__ds__extract_year AS booking__ds__extract_year + , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_6.booking__ds__extract_month AS booking__ds__extract_month + , subq_6.booking__ds__extract_day AS booking__ds__extract_day + , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_6.booking__paid_at__day AS booking__paid_at__day + , subq_6.booking__paid_at__week AS booking__paid_at__week + , subq_6.booking__paid_at__month AS booking__paid_at__month + , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_6.booking__paid_at__year AS booking__paid_at__year + , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_6.metric_time__week AS metric_time__week + , subq_6.metric_time__month AS metric_time__month + , subq_6.metric_time__quarter AS metric_time__quarter + , subq_6.metric_time__year AS metric_time__year + , subq_6.metric_time__extract_year AS metric_time__extract_year + , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_6.metric_time__extract_month AS metric_time__extract_month + , subq_6.metric_time__extract_day AS metric_time__extract_day + , subq_6.metric_time__extract_dow AS metric_time__extract_dow + , subq_6.metric_time__extract_doy AS metric_time__extract_doy + , subq_6.listing AS listing + , subq_6.guest AS guest + , subq_6.host AS host + , subq_6.booking__listing AS booking__listing + , subq_6.booking__guest AS booking__guest + , subq_6.booking__host AS booking__host + , subq_6.is_instant AS is_instant + , subq_6.booking__is_instant AS booking__is_instant + , subq_6.bookings AS bookings + , subq_6.instant_bookings AS instant_bookings + , subq_6.booking_value AS booking_value + , subq_6.max_booking_value AS max_booking_value + , subq_6.min_booking_value AS min_booking_value + , subq_6.bookers AS bookers + , subq_6.average_booking_value AS average_booking_value + , subq_6.referred_bookings AS referred_bookings + , subq_6.median_booking_value AS median_booking_value + , subq_6.booking_value_p99 AS booking_value_p99 + , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_8.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_8.ds__day AS metric_time__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -582,110 +582,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_8 - ) subq_9 - ) subq_10 + ) subq_7 + ) subq_8 + ) subq_9 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds_partitioned__day - , subq_6.ds_partitioned__week - , subq_6.ds_partitioned__month - , subq_6.ds_partitioned__quarter - , subq_6.ds_partitioned__year - , subq_6.ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy - , subq_6.paid_at__day - , subq_6.paid_at__week - , subq_6.paid_at__month - , subq_6.paid_at__quarter - , subq_6.paid_at__year - , subq_6.paid_at__extract_year - , subq_6.paid_at__extract_quarter - , subq_6.paid_at__extract_month - , subq_6.paid_at__extract_day - , subq_6.paid_at__extract_dow - , subq_6.paid_at__extract_doy - , subq_6.booking__ds__day - , subq_6.booking__ds__week - , subq_6.booking__ds__month - , subq_6.booking__ds__quarter - , subq_6.booking__ds__year - , subq_6.booking__ds__extract_year - , subq_6.booking__ds__extract_quarter - , subq_6.booking__ds__extract_month - , subq_6.booking__ds__extract_day - , subq_6.booking__ds__extract_dow - , subq_6.booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day - , subq_6.booking__paid_at__week - , subq_6.booking__paid_at__month - , subq_6.booking__paid_at__quarter - , subq_6.booking__paid_at__year - , subq_6.booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.listing - , subq_6.guest - , subq_6.host - , subq_6.booking__listing - , subq_6.booking__guest - , subq_6.booking__host - , subq_6.is_instant - , subq_6.booking__is_instant - , subq_6.bookings - , subq_6.instant_bookings - , subq_6.booking_value - , subq_6.max_booking_value - , subq_6.min_booking_value - , subq_6.bookers - , subq_6.average_booking_value - , subq_6.referred_bookings - , subq_6.median_booking_value - , subq_6.booking_value_p99 - , subq_6.discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -778,20 +778,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_6 ON - DATE_ADD('day', -14, subq_10.metric_time__day) = subq_7.metric_time__day - ) subq_11 + DATE_ADD('day', -14, subq_9.metric_time__day) = subq_6.metric_time__day + ) subq_10 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_5.metric_time__day = subq_15.metric_time__day + subq_5.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_5.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_5.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql index d823bd1402..cf189ad348 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_metric_with_offset_window_and_time_filter__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_22.bookings) AS bookings - , MAX(subq_31.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_21.bookings) AS bookings + , MAX(subq_30.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -35,11 +35,11 @@ FROM ( metric_time__day , bookings FROM sma_28009_cte sma_28009_cte - ) subq_18 + ) subq_17 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_22 + ) subq_21 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -58,13 +58,13 @@ FROM ( sma_28009_cte sma_28009_cte ON DATE_ADD('day', -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' or metric_time__day = '2020-01-14' GROUP BY metric_time__day - ) subq_31 + ) subq_30 ON - subq_22.metric_time__day = subq_31.metric_time__day + subq_21.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_22.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_21.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql index 6585c10a3c..8c65e7fa01 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -372,119 +372,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookers + subq_11.booking__ds__day + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.booking__ds__day + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookers + subq_9.booking__ds__day + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -577,15 +577,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_8.booking__ds__day = subq_13.booking__ds__day + subq_8.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_8.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_8.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql index 7869d08728..1a1799f297 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_derived_offset_metric_with_agg_time_dim__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'booking__ds__day'] @@ -37,7 +37,7 @@ FROM ( DATE_ADD('week', -1, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'booking__ds__day'] @@ -49,9 +49,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_27 + ) subq_26 ON - subq_23.booking__ds__day = subq_27.booking__ds__day + subq_22.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_23.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_22.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0.sql index 1edccab425..8c1566c9d4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0.sql @@ -4,26 +4,26 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_22.metric_time__day + subq_16.metric_time__day , non_referred + (instant * 1.0 / bookings) AS instant_plus_non_referred_bookings_pct FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) AS metric_time__day - , MAX(subq_11.non_referred) AS non_referred - , MAX(subq_16.instant) AS instant - , MAX(subq_21.bookings) AS bookings + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) AS metric_time__day + , MAX(subq_10.non_referred) AS non_referred + , MAX(subq_14.instant) AS instant + , MAX(subq_15.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_10.metric_time__day + subq_9.metric_time__day , (bookings - ref_bookings) * 1.0 / bookings AS non_referred FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) AS metric_time__day + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) AS metric_time__day , MAX(subq_4.ref_bookings) AS ref_bookings - , MAX(subq_9.bookings) AS bookings + , MAX(subq_8.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -242,119 +242,119 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_8.metric_time__day - , subq_8.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_7.metric_time__day - , SUM(subq_7.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_6.metric_time__day - , subq_6.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -447,135 +447,135 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_7.metric_time__day - ) subq_8 - ) subq_9 + subq_6.metric_time__day + ) subq_7 + ) subq_8 ON - subq_4.metric_time__day = subq_9.metric_time__day + subq_4.metric_time__day = subq_8.metric_time__day GROUP BY - COALESCE(subq_4.metric_time__day, subq_9.metric_time__day) - ) subq_10 - ) subq_11 + COALESCE(subq_4.metric_time__day, subq_8.metric_time__day) + ) subq_9 + ) subq_10 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_15.metric_time__day - , subq_15.instant_bookings AS instant + subq_13.metric_time__day + , subq_13.instant_bookings AS instant FROM ( -- Aggregate Measures SELECT - subq_14.metric_time__day - , SUM(subq_14.instant_bookings) AS instant_bookings + subq_12.metric_time__day + , SUM(subq_12.instant_bookings) AS instant_bookings FROM ( -- Pass Only Elements: ['instant_bookings', 'metric_time__day'] SELECT - subq_13.metric_time__day - , subq_13.instant_bookings + subq_11.metric_time__day + , subq_11.instant_bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.ds_partitioned__day - , subq_12.ds_partitioned__week - , subq_12.ds_partitioned__month - , subq_12.ds_partitioned__quarter - , subq_12.ds_partitioned__year - , subq_12.ds_partitioned__extract_year - , subq_12.ds_partitioned__extract_quarter - , subq_12.ds_partitioned__extract_month - , subq_12.ds_partitioned__extract_day - , subq_12.ds_partitioned__extract_dow - , subq_12.ds_partitioned__extract_doy - , subq_12.paid_at__day - , subq_12.paid_at__week - , subq_12.paid_at__month - , subq_12.paid_at__quarter - , subq_12.paid_at__year - , subq_12.paid_at__extract_year - , subq_12.paid_at__extract_quarter - , subq_12.paid_at__extract_month - , subq_12.paid_at__extract_day - , subq_12.paid_at__extract_dow - , subq_12.paid_at__extract_doy - , subq_12.booking__ds__day - , subq_12.booking__ds__week - , subq_12.booking__ds__month - , subq_12.booking__ds__quarter - , subq_12.booking__ds__year - , subq_12.booking__ds__extract_year - , subq_12.booking__ds__extract_quarter - , subq_12.booking__ds__extract_month - , subq_12.booking__ds__extract_day - , subq_12.booking__ds__extract_dow - , subq_12.booking__ds__extract_doy - , subq_12.booking__ds_partitioned__day - , subq_12.booking__ds_partitioned__week - , subq_12.booking__ds_partitioned__month - , subq_12.booking__ds_partitioned__quarter - , subq_12.booking__ds_partitioned__year - , subq_12.booking__ds_partitioned__extract_year - , subq_12.booking__ds_partitioned__extract_quarter - , subq_12.booking__ds_partitioned__extract_month - , subq_12.booking__ds_partitioned__extract_day - , subq_12.booking__ds_partitioned__extract_dow - , subq_12.booking__ds_partitioned__extract_doy - , subq_12.booking__paid_at__day - , subq_12.booking__paid_at__week - , subq_12.booking__paid_at__month - , subq_12.booking__paid_at__quarter - , subq_12.booking__paid_at__year - , subq_12.booking__paid_at__extract_year - , subq_12.booking__paid_at__extract_quarter - , subq_12.booking__paid_at__extract_month - , subq_12.booking__paid_at__extract_day - , subq_12.booking__paid_at__extract_dow - , subq_12.booking__paid_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.guest - , subq_12.host - , subq_12.booking__listing - , subq_12.booking__guest - , subq_12.booking__host - , subq_12.is_instant - , subq_12.booking__is_instant - , subq_12.bookings - , subq_12.instant_bookings - , subq_12.booking_value - , subq_12.max_booking_value - , subq_12.min_booking_value - , subq_12.bookers - , subq_12.average_booking_value - , subq_12.referred_bookings - , subq_12.median_booking_value - , subq_12.booking_value_p99 - , subq_12.discrete_booking_value_p99 - , subq_12.approximate_continuous_booking_value_p99 - , subq_12.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -668,131 +668,131 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_0 + ) subq_11 + ) subq_12 GROUP BY - subq_14.metric_time__day - ) subq_15 - ) subq_16 + subq_12.metric_time__day + ) subq_13 + ) subq_14 ON - subq_11.metric_time__day = subq_16.metric_time__day + subq_10.metric_time__day = subq_14.metric_time__day FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_20.metric_time__day - , subq_20.bookings + subq_7.metric_time__day + , subq_7.bookings FROM ( -- Aggregate Measures SELECT - subq_19.metric_time__day - , SUM(subq_19.bookings) AS bookings + subq_6.metric_time__day + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_18.metric_time__day - , subq_18.bookings + subq_5.metric_time__day + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_17.ds__day - , subq_17.ds__week - , subq_17.ds__month - , subq_17.ds__quarter - , subq_17.ds__year - , subq_17.ds__extract_year - , subq_17.ds__extract_quarter - , subq_17.ds__extract_month - , subq_17.ds__extract_day - , subq_17.ds__extract_dow - , subq_17.ds__extract_doy - , subq_17.ds_partitioned__day - , subq_17.ds_partitioned__week - , subq_17.ds_partitioned__month - , subq_17.ds_partitioned__quarter - , subq_17.ds_partitioned__year - , subq_17.ds_partitioned__extract_year - , subq_17.ds_partitioned__extract_quarter - , subq_17.ds_partitioned__extract_month - , subq_17.ds_partitioned__extract_day - , subq_17.ds_partitioned__extract_dow - , subq_17.ds_partitioned__extract_doy - , subq_17.paid_at__day - , subq_17.paid_at__week - , subq_17.paid_at__month - , subq_17.paid_at__quarter - , subq_17.paid_at__year - , subq_17.paid_at__extract_year - , subq_17.paid_at__extract_quarter - , subq_17.paid_at__extract_month - , subq_17.paid_at__extract_day - , subq_17.paid_at__extract_dow - , subq_17.paid_at__extract_doy - , subq_17.booking__ds__day - , subq_17.booking__ds__week - , subq_17.booking__ds__month - , subq_17.booking__ds__quarter - , subq_17.booking__ds__year - , subq_17.booking__ds__extract_year - , subq_17.booking__ds__extract_quarter - , subq_17.booking__ds__extract_month - , subq_17.booking__ds__extract_day - , subq_17.booking__ds__extract_dow - , subq_17.booking__ds__extract_doy - , subq_17.booking__ds_partitioned__day - , subq_17.booking__ds_partitioned__week - , subq_17.booking__ds_partitioned__month - , subq_17.booking__ds_partitioned__quarter - , subq_17.booking__ds_partitioned__year - , subq_17.booking__ds_partitioned__extract_year - , subq_17.booking__ds_partitioned__extract_quarter - , subq_17.booking__ds_partitioned__extract_month - , subq_17.booking__ds_partitioned__extract_day - , subq_17.booking__ds_partitioned__extract_dow - , subq_17.booking__ds_partitioned__extract_doy - , subq_17.booking__paid_at__day - , subq_17.booking__paid_at__week - , subq_17.booking__paid_at__month - , subq_17.booking__paid_at__quarter - , subq_17.booking__paid_at__year - , subq_17.booking__paid_at__extract_year - , subq_17.booking__paid_at__extract_quarter - , subq_17.booking__paid_at__extract_month - , subq_17.booking__paid_at__extract_day - , subq_17.booking__paid_at__extract_dow - , subq_17.booking__paid_at__extract_doy - , subq_17.ds__day AS metric_time__day - , subq_17.ds__week AS metric_time__week - , subq_17.ds__month AS metric_time__month - , subq_17.ds__quarter AS metric_time__quarter - , subq_17.ds__year AS metric_time__year - , subq_17.ds__extract_year AS metric_time__extract_year - , subq_17.ds__extract_quarter AS metric_time__extract_quarter - , subq_17.ds__extract_month AS metric_time__extract_month - , subq_17.ds__extract_day AS metric_time__extract_day - , subq_17.ds__extract_dow AS metric_time__extract_dow - , subq_17.ds__extract_doy AS metric_time__extract_doy - , subq_17.listing - , subq_17.guest - , subq_17.host - , subq_17.booking__listing - , subq_17.booking__guest - , subq_17.booking__host - , subq_17.is_instant - , subq_17.booking__is_instant - , subq_17.bookings - , subq_17.instant_bookings - , subq_17.booking_value - , subq_17.max_booking_value - , subq_17.min_booking_value - , subq_17.bookers - , subq_17.average_booking_value - , subq_17.referred_bookings - , subq_17.median_booking_value - , subq_17.booking_value_p99 - , subq_17.discrete_booking_value_p99 - , subq_17.approximate_continuous_booking_value_p99 - , subq_17.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -885,15 +885,15 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_0 + ) subq_5 + ) subq_6 GROUP BY - subq_19.metric_time__day - ) subq_20 - ) subq_21 + subq_6.metric_time__day + ) subq_7 + ) subq_15 ON - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day) = subq_21.metric_time__day + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day) = subq_15.metric_time__day GROUP BY - COALESCE(subq_11.metric_time__day, subq_16.metric_time__day, subq_21.metric_time__day) -) subq_22 + COALESCE(subq_10.metric_time__day, subq_14.metric_time__day, subq_15.metric_time__day) +) subq_16 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0_optimized.sql index d0deaa9a18..5f041e82c3 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric__plan0_optimized.sql @@ -9,10 +9,10 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) AS metric_time__day - , MAX(subq_28.non_referred) AS non_referred - , MAX(subq_33.instant) AS instant - , MAX(subq_33.bookings) AS bookings + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) AS metric_time__day + , MAX(subq_22.non_referred) AS non_referred + , MAX(subq_27.instant) AS instant + , MAX(subq_27.bookings) AS bookings FROM ( -- Compute Metrics via Expressions SELECT @@ -34,11 +34,11 @@ FROM ( , 1 AS bookings , CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_25 + ) subq_19 GROUP BY metric_time__day - ) subq_27 - ) subq_28 + ) subq_21 + ) subq_22 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -55,12 +55,12 @@ FROM ( , 1 AS bookings , CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_31 + ) subq_25 GROUP BY metric_time__day - ) subq_33 + ) subq_27 ON - subq_28.metric_time__day = subq_33.metric_time__day + subq_22.metric_time__day = subq_27.metric_time__day GROUP BY - COALESCE(subq_28.metric_time__day, subq_33.metric_time__day) -) subq_34 + COALESCE(subq_22.metric_time__day, subq_27.metric_time__day) +) subq_28 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql index 64f91d6dea..8f326e28e5 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day + subq_15.metric_time__day , booking_fees - booking_fees_start_of_month AS booking_fees_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) AS metric_time__day + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) AS metric_time__day , MAX(subq_9.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_15.booking_fees) AS booking_fees + , MAX(subq_14.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT @@ -282,124 +282,124 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day + subq_13.metric_time__day , booking_value * 0.05 AS booking_fees FROM ( -- Compute Metrics via Expressions SELECT - subq_13.metric_time__day - , subq_13.booking_value + subq_12.metric_time__day + , subq_12.booking_value FROM ( -- Aggregate Measures SELECT - subq_12.metric_time__day - , SUM(subq_12.booking_value) AS booking_value + subq_11.metric_time__day + , SUM(subq_11.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'metric_time__day'] SELECT - subq_11.metric_time__day - , subq_11.booking_value + subq_10.metric_time__day + , subq_10.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -492,16 +492,16 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 - ) subq_12 + ) subq_0 + ) subq_10 + ) subq_11 GROUP BY - subq_12.metric_time__day - ) subq_13 - ) subq_14 - ) subq_15 + subq_11.metric_time__day + ) subq_12 + ) subq_13 + ) subq_14 ON - subq_9.metric_time__day = subq_15.metric_time__day + subq_9.metric_time__day = subq_14.metric_time__day GROUP BY - COALESCE(subq_9.metric_time__day, subq_15.metric_time__day) -) subq_16 + COALESCE(subq_9.metric_time__day, subq_14.metric_time__day) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql index 3c722f0e31..efb4654c76 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_derived_metric_with_offset_multiple_input_metrics__plan0_optimized.sql @@ -18,14 +18,14 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) AS metric_time__day - , MAX(subq_26.booking_fees_start_of_month) AS booking_fees_start_of_month - , MAX(subq_31.booking_fees) AS booking_fees + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) AS metric_time__day + , MAX(subq_25.booking_fees_start_of_month) AS booking_fees_start_of_month + , MAX(subq_30.booking_fees) AS booking_fees FROM ( -- Join to Time Spine Dataset SELECT time_spine_src_28006.ds AS metric_time__day - , subq_22.booking_fees_start_of_month AS booking_fees_start_of_month + , subq_21.booking_fees_start_of_month AS booking_fees_start_of_month FROM ***************************.mf_time_spine time_spine_src_28006 INNER JOIN ( -- Compute Metrics via Expressions @@ -43,11 +43,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_21 - ) subq_22 + ) subq_20 + ) subq_21 ON - DATE_TRUNC('month', time_spine_src_28006.ds) = subq_22.metric_time__day - ) subq_26 + DATE_TRUNC('month', time_spine_src_28006.ds) = subq_21.metric_time__day + ) subq_25 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT @@ -64,10 +64,10 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_30 - ) subq_31 + ) subq_29 + ) subq_30 ON - subq_26.metric_time__day = subq_31.metric_time__day + subq_25.metric_time__day = subq_30.metric_time__day GROUP BY - COALESCE(subq_26.metric_time__day, subq_31.metric_time__day) -) subq_32 + COALESCE(subq_25.metric_time__day, subq_30.metric_time__day) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0.sql index 7277371b1f..ac5e7a90f8 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0.sql @@ -15,8 +15,8 @@ FROM ( -- Combine Aggregated Outputs SELECT MAX(subq_9.average_booking_value) AS average_booking_value - , MAX(subq_19.bookings) AS bookings - , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_17.bookings) AS bookings + , MAX(subq_22.booking_value) AS booking_value FROM ( -- Compute Metrics via Expressions SELECT @@ -577,320 +577,320 @@ FROM ( CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_18.bookings + subq_16.bookings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.bookings) AS bookings + SUM(subq_15.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings',] SELECT - subq_16.bookings + subq_14.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.ds_partitioned__day - , subq_15.ds_partitioned__week - , subq_15.ds_partitioned__month - , subq_15.ds_partitioned__quarter - , subq_15.ds_partitioned__year - , subq_15.ds_partitioned__extract_year - , subq_15.ds_partitioned__extract_quarter - , subq_15.ds_partitioned__extract_month - , subq_15.ds_partitioned__extract_day - , subq_15.ds_partitioned__extract_dow - , subq_15.ds_partitioned__extract_doy - , subq_15.paid_at__day - , subq_15.paid_at__week - , subq_15.paid_at__month - , subq_15.paid_at__quarter - , subq_15.paid_at__year - , subq_15.paid_at__extract_year - , subq_15.paid_at__extract_quarter - , subq_15.paid_at__extract_month - , subq_15.paid_at__extract_day - , subq_15.paid_at__extract_dow - , subq_15.paid_at__extract_doy - , subq_15.booking__ds__day - , subq_15.booking__ds__week - , subq_15.booking__ds__month - , subq_15.booking__ds__quarter - , subq_15.booking__ds__year - , subq_15.booking__ds__extract_year - , subq_15.booking__ds__extract_quarter - , subq_15.booking__ds__extract_month - , subq_15.booking__ds__extract_day - , subq_15.booking__ds__extract_dow - , subq_15.booking__ds__extract_doy - , subq_15.booking__ds_partitioned__day - , subq_15.booking__ds_partitioned__week - , subq_15.booking__ds_partitioned__month - , subq_15.booking__ds_partitioned__quarter - , subq_15.booking__ds_partitioned__year - , subq_15.booking__ds_partitioned__extract_year - , subq_15.booking__ds_partitioned__extract_quarter - , subq_15.booking__ds_partitioned__extract_month - , subq_15.booking__ds_partitioned__extract_day - , subq_15.booking__ds_partitioned__extract_dow - , subq_15.booking__ds_partitioned__extract_doy - , subq_15.booking__paid_at__day - , subq_15.booking__paid_at__week - , subq_15.booking__paid_at__month - , subq_15.booking__paid_at__quarter - , subq_15.booking__paid_at__year - , subq_15.booking__paid_at__extract_year - , subq_15.booking__paid_at__extract_quarter - , subq_15.booking__paid_at__extract_month - , subq_15.booking__paid_at__extract_day - , subq_15.booking__paid_at__extract_dow - , subq_15.booking__paid_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.guest - , subq_15.host - , subq_15.booking__listing - , subq_15.booking__guest - , subq_15.booking__host - , subq_15.is_instant - , subq_15.booking__is_instant - , subq_15.listing__is_lux_latest - , subq_15.bookings - , subq_15.instant_bookings - , subq_15.booking_value - , subq_15.max_booking_value - , subq_15.min_booking_value - , subq_15.bookers - , subq_15.average_booking_value - , subq_15.referred_bookings - , subq_15.median_booking_value - , subq_15.booking_value_p99 - , subq_15.discrete_booking_value_p99 - , subq_15.approximate_continuous_booking_value_p99 - , subq_15.approximate_discrete_booking_value_p99 + subq_13.ds__day + , subq_13.ds__week + , subq_13.ds__month + , subq_13.ds__quarter + , subq_13.ds__year + , subq_13.ds__extract_year + , subq_13.ds__extract_quarter + , subq_13.ds__extract_month + , subq_13.ds__extract_day + , subq_13.ds__extract_dow + , subq_13.ds__extract_doy + , subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.paid_at__day + , subq_13.paid_at__week + , subq_13.paid_at__month + , subq_13.paid_at__quarter + , subq_13.paid_at__year + , subq_13.paid_at__extract_year + , subq_13.paid_at__extract_quarter + , subq_13.paid_at__extract_month + , subq_13.paid_at__extract_day + , subq_13.paid_at__extract_dow + , subq_13.paid_at__extract_doy + , subq_13.booking__ds__day + , subq_13.booking__ds__week + , subq_13.booking__ds__month + , subq_13.booking__ds__quarter + , subq_13.booking__ds__year + , subq_13.booking__ds__extract_year + , subq_13.booking__ds__extract_quarter + , subq_13.booking__ds__extract_month + , subq_13.booking__ds__extract_day + , subq_13.booking__ds__extract_dow + , subq_13.booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day + , subq_13.booking__paid_at__week + , subq_13.booking__paid_at__month + , subq_13.booking__paid_at__quarter + , subq_13.booking__paid_at__year + , subq_13.booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.listing + , subq_13.guest + , subq_13.host + , subq_13.booking__listing + , subq_13.booking__guest + , subq_13.booking__host + , subq_13.is_instant + , subq_13.booking__is_instant + , subq_13.listing__is_lux_latest + , subq_13.bookings + , subq_13.instant_bookings + , subq_13.booking_value + , subq_13.max_booking_value + , subq_13.min_booking_value + , subq_13.bookers + , subq_13.average_booking_value + , subq_13.referred_bookings + , subq_13.median_booking_value + , subq_13.booking_value_p99 + , subq_13.discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_14.is_lux_latest AS listing__is_lux_latest - , subq_11.ds__day AS ds__day - , subq_11.ds__week AS ds__week - , subq_11.ds__month AS ds__month - , subq_11.ds__quarter AS ds__quarter - , subq_11.ds__year AS ds__year - , subq_11.ds__extract_year AS ds__extract_year - , subq_11.ds__extract_quarter AS ds__extract_quarter - , subq_11.ds__extract_month AS ds__extract_month - , subq_11.ds__extract_day AS ds__extract_day - , subq_11.ds__extract_dow AS ds__extract_dow - , subq_11.ds__extract_doy AS ds__extract_doy - , subq_11.ds_partitioned__day AS ds_partitioned__day - , subq_11.ds_partitioned__week AS ds_partitioned__week - , subq_11.ds_partitioned__month AS ds_partitioned__month - , subq_11.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_11.ds_partitioned__year AS ds_partitioned__year - , subq_11.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_11.paid_at__day AS paid_at__day - , subq_11.paid_at__week AS paid_at__week - , subq_11.paid_at__month AS paid_at__month - , subq_11.paid_at__quarter AS paid_at__quarter - , subq_11.paid_at__year AS paid_at__year - , subq_11.paid_at__extract_year AS paid_at__extract_year - , subq_11.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_11.paid_at__extract_month AS paid_at__extract_month - , subq_11.paid_at__extract_day AS paid_at__extract_day - , subq_11.paid_at__extract_dow AS paid_at__extract_dow - , subq_11.paid_at__extract_doy AS paid_at__extract_doy - , subq_11.booking__ds__day AS booking__ds__day - , subq_11.booking__ds__week AS booking__ds__week - , subq_11.booking__ds__month AS booking__ds__month - , subq_11.booking__ds__quarter AS booking__ds__quarter - , subq_11.booking__ds__year AS booking__ds__year - , subq_11.booking__ds__extract_year AS booking__ds__extract_year - , subq_11.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_11.booking__ds__extract_month AS booking__ds__extract_month - , subq_11.booking__ds__extract_day AS booking__ds__extract_day - , subq_11.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_11.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day AS booking__paid_at__day - , subq_11.booking__paid_at__week AS booking__paid_at__week - , subq_11.booking__paid_at__month AS booking__paid_at__month - , subq_11.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_11.booking__paid_at__year AS booking__paid_at__year - , subq_11.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_11.metric_time__day AS metric_time__day - , subq_11.metric_time__week AS metric_time__week - , subq_11.metric_time__month AS metric_time__month - , subq_11.metric_time__quarter AS metric_time__quarter - , subq_11.metric_time__year AS metric_time__year - , subq_11.metric_time__extract_year AS metric_time__extract_year - , subq_11.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_11.metric_time__extract_month AS metric_time__extract_month - , subq_11.metric_time__extract_day AS metric_time__extract_day - , subq_11.metric_time__extract_dow AS metric_time__extract_dow - , subq_11.metric_time__extract_doy AS metric_time__extract_doy - , subq_11.listing AS listing - , subq_11.guest AS guest - , subq_11.host AS host - , subq_11.booking__listing AS booking__listing - , subq_11.booking__guest AS booking__guest - , subq_11.booking__host AS booking__host - , subq_11.is_instant AS is_instant - , subq_11.booking__is_instant AS booking__is_instant - , subq_11.bookings AS bookings - , subq_11.instant_bookings AS instant_bookings - , subq_11.booking_value AS booking_value - , subq_11.max_booking_value AS max_booking_value - , subq_11.min_booking_value AS min_booking_value - , subq_11.bookers AS bookers - , subq_11.average_booking_value AS average_booking_value - , subq_11.referred_bookings AS referred_bookings - , subq_11.median_booking_value AS median_booking_value - , subq_11.booking_value_p99 AS booking_value_p99 - , subq_11.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.is_lux_latest AS listing__is_lux_latest + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.ds_partitioned__day AS ds_partitioned__day + , subq_10.ds_partitioned__week AS ds_partitioned__week + , subq_10.ds_partitioned__month AS ds_partitioned__month + , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_10.ds_partitioned__year AS ds_partitioned__year + , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_10.paid_at__day AS paid_at__day + , subq_10.paid_at__week AS paid_at__week + , subq_10.paid_at__month AS paid_at__month + , subq_10.paid_at__quarter AS paid_at__quarter + , subq_10.paid_at__year AS paid_at__year + , subq_10.paid_at__extract_year AS paid_at__extract_year + , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_10.paid_at__extract_month AS paid_at__extract_month + , subq_10.paid_at__extract_day AS paid_at__extract_day + , subq_10.paid_at__extract_dow AS paid_at__extract_dow + , subq_10.paid_at__extract_doy AS paid_at__extract_doy + , subq_10.booking__ds__day AS booking__ds__day + , subq_10.booking__ds__week AS booking__ds__week + , subq_10.booking__ds__month AS booking__ds__month + , subq_10.booking__ds__quarter AS booking__ds__quarter + , subq_10.booking__ds__year AS booking__ds__year + , subq_10.booking__ds__extract_year AS booking__ds__extract_year + , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_10.booking__ds__extract_month AS booking__ds__extract_month + , subq_10.booking__ds__extract_day AS booking__ds__extract_day + , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day AS booking__paid_at__day + , subq_10.booking__paid_at__week AS booking__paid_at__week + , subq_10.booking__paid_at__month AS booking__paid_at__month + , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_10.booking__paid_at__year AS booking__paid_at__year + , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.guest AS guest + , subq_10.host AS host + , subq_10.booking__listing AS booking__listing + , subq_10.booking__guest AS booking__guest + , subq_10.booking__host AS booking__host + , subq_10.is_instant AS is_instant + , subq_10.booking__is_instant AS booking__is_instant + , subq_10.bookings AS bookings + , subq_10.instant_bookings AS instant_bookings + , subq_10.booking_value AS booking_value + , subq_10.max_booking_value AS max_booking_value + , subq_10.min_booking_value AS min_booking_value + , subq_10.bookers AS bookers + , subq_10.average_booking_value AS average_booking_value + , subq_10.referred_bookings AS referred_bookings + , subq_10.median_booking_value AS median_booking_value + , subq_10.booking_value_p99 AS booking_value_p99 + , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -983,83 +983,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['is_lux_latest', 'listing'] SELECT - subq_13.listing - , subq_13.is_lux_latest + subq_11.listing + , subq_11.is_lux_latest FROM ( -- Metric Time Dimension 'ds' SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.ds__day AS metric_time__day - , subq_12.ds__week AS metric_time__week - , subq_12.ds__month AS metric_time__month - , subq_12.ds__quarter AS metric_time__quarter - , subq_12.ds__year AS metric_time__year - , subq_12.ds__extract_year AS metric_time__extract_year - , subq_12.ds__extract_quarter AS metric_time__extract_quarter - , subq_12.ds__extract_month AS metric_time__extract_month - , subq_12.ds__extract_day AS metric_time__extract_day - , subq_12.ds__extract_dow AS metric_time__extract_dow - , subq_12.ds__extract_doy AS metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.listing__ds__day + , subq_2.listing__ds__week + , subq_2.listing__ds__month + , subq_2.listing__ds__quarter + , subq_2.listing__ds__year + , subq_2.listing__ds__extract_year + , subq_2.listing__ds__extract_quarter + , subq_2.listing__ds__extract_month + , subq_2.listing__ds__extract_day + , subq_2.listing__ds__extract_dow + , subq_2.listing__ds__extract_doy + , subq_2.listing__created_at__day + , subq_2.listing__created_at__week + , subq_2.listing__created_at__month + , subq_2.listing__created_at__quarter + , subq_2.listing__created_at__year + , subq_2.listing__created_at__extract_year + , subq_2.listing__created_at__extract_quarter + , subq_2.listing__created_at__extract_month + , subq_2.listing__created_at__extract_day + , subq_2.listing__created_at__extract_dow + , subq_2.listing__created_at__extract_doy + , subq_2.ds__day AS metric_time__day + , subq_2.ds__week AS metric_time__week + , subq_2.ds__month AS metric_time__month + , subq_2.ds__quarter AS metric_time__quarter + , subq_2.ds__year AS metric_time__year + , subq_2.ds__extract_year AS metric_time__extract_year + , subq_2.ds__extract_quarter AS metric_time__extract_quarter + , subq_2.ds__extract_month AS metric_time__extract_month + , subq_2.ds__extract_day AS metric_time__extract_day + , subq_2.ds__extract_dow AS metric_time__extract_dow + , subq_2.ds__extract_doy AS metric_time__extract_doy + , subq_2.listing + , subq_2.user + , subq_2.listing__user + , subq_2.country_latest + , subq_2.is_lux_latest + , subq_2.capacity_latest + , subq_2.listing__country_latest + , subq_2.listing__is_lux_latest + , subq_2.listing__capacity_latest + , subq_2.listings + , subq_2.largest_listing + , subq_2.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -1120,231 +1120,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_2 + ) subq_11 + ) subq_12 ON - subq_11.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_12.listing + ) subq_13 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_16 - ) subq_17 - ) subq_18 - ) subq_19 + ) subq_14 + ) subq_15 + ) subq_16 + ) subq_17 CROSS JOIN ( -- Compute Metrics via Expressions SELECT - subq_24.booking_value + subq_21.booking_value FROM ( -- Aggregate Measures SELECT - SUM(subq_23.booking_value) AS booking_value + SUM(subq_20.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value',] SELECT - subq_22.booking_value + subq_19.booking_value FROM ( -- Constrain Output with WHERE SELECT - subq_21.ds__day - , subq_21.ds__week - , subq_21.ds__month - , subq_21.ds__quarter - , subq_21.ds__year - , subq_21.ds__extract_year - , subq_21.ds__extract_quarter - , subq_21.ds__extract_month - , subq_21.ds__extract_day - , subq_21.ds__extract_dow - , subq_21.ds__extract_doy - , subq_21.ds_partitioned__day - , subq_21.ds_partitioned__week - , subq_21.ds_partitioned__month - , subq_21.ds_partitioned__quarter - , subq_21.ds_partitioned__year - , subq_21.ds_partitioned__extract_year - , subq_21.ds_partitioned__extract_quarter - , subq_21.ds_partitioned__extract_month - , subq_21.ds_partitioned__extract_day - , subq_21.ds_partitioned__extract_dow - , subq_21.ds_partitioned__extract_doy - , subq_21.paid_at__day - , subq_21.paid_at__week - , subq_21.paid_at__month - , subq_21.paid_at__quarter - , subq_21.paid_at__year - , subq_21.paid_at__extract_year - , subq_21.paid_at__extract_quarter - , subq_21.paid_at__extract_month - , subq_21.paid_at__extract_day - , subq_21.paid_at__extract_dow - , subq_21.paid_at__extract_doy - , subq_21.booking__ds__day - , subq_21.booking__ds__week - , subq_21.booking__ds__month - , subq_21.booking__ds__quarter - , subq_21.booking__ds__year - , subq_21.booking__ds__extract_year - , subq_21.booking__ds__extract_quarter - , subq_21.booking__ds__extract_month - , subq_21.booking__ds__extract_day - , subq_21.booking__ds__extract_dow - , subq_21.booking__ds__extract_doy - , subq_21.booking__ds_partitioned__day - , subq_21.booking__ds_partitioned__week - , subq_21.booking__ds_partitioned__month - , subq_21.booking__ds_partitioned__quarter - , subq_21.booking__ds_partitioned__year - , subq_21.booking__ds_partitioned__extract_year - , subq_21.booking__ds_partitioned__extract_quarter - , subq_21.booking__ds_partitioned__extract_month - , subq_21.booking__ds_partitioned__extract_day - , subq_21.booking__ds_partitioned__extract_dow - , subq_21.booking__ds_partitioned__extract_doy - , subq_21.booking__paid_at__day - , subq_21.booking__paid_at__week - , subq_21.booking__paid_at__month - , subq_21.booking__paid_at__quarter - , subq_21.booking__paid_at__year - , subq_21.booking__paid_at__extract_year - , subq_21.booking__paid_at__extract_quarter - , subq_21.booking__paid_at__extract_month - , subq_21.booking__paid_at__extract_day - , subq_21.booking__paid_at__extract_dow - , subq_21.booking__paid_at__extract_doy - , subq_21.metric_time__day - , subq_21.metric_time__week - , subq_21.metric_time__month - , subq_21.metric_time__quarter - , subq_21.metric_time__year - , subq_21.metric_time__extract_year - , subq_21.metric_time__extract_quarter - , subq_21.metric_time__extract_month - , subq_21.metric_time__extract_day - , subq_21.metric_time__extract_dow - , subq_21.metric_time__extract_doy - , subq_21.listing - , subq_21.guest - , subq_21.host - , subq_21.booking__listing - , subq_21.booking__guest - , subq_21.booking__host - , subq_21.is_instant - , subq_21.booking__is_instant - , subq_21.bookings - , subq_21.instant_bookings - , subq_21.booking_value - , subq_21.max_booking_value - , subq_21.min_booking_value - , subq_21.bookers - , subq_21.average_booking_value - , subq_21.referred_bookings - , subq_21.median_booking_value - , subq_21.booking_value_p99 - , subq_21.discrete_booking_value_p99 - , subq_21.approximate_continuous_booking_value_p99 - , subq_21.approximate_discrete_booking_value_p99 + subq_18.ds__day + , subq_18.ds__week + , subq_18.ds__month + , subq_18.ds__quarter + , subq_18.ds__year + , subq_18.ds__extract_year + , subq_18.ds__extract_quarter + , subq_18.ds__extract_month + , subq_18.ds__extract_day + , subq_18.ds__extract_dow + , subq_18.ds__extract_doy + , subq_18.ds_partitioned__day + , subq_18.ds_partitioned__week + , subq_18.ds_partitioned__month + , subq_18.ds_partitioned__quarter + , subq_18.ds_partitioned__year + , subq_18.ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy + , subq_18.paid_at__day + , subq_18.paid_at__week + , subq_18.paid_at__month + , subq_18.paid_at__quarter + , subq_18.paid_at__year + , subq_18.paid_at__extract_year + , subq_18.paid_at__extract_quarter + , subq_18.paid_at__extract_month + , subq_18.paid_at__extract_day + , subq_18.paid_at__extract_dow + , subq_18.paid_at__extract_doy + , subq_18.booking__ds__day + , subq_18.booking__ds__week + , subq_18.booking__ds__month + , subq_18.booking__ds__quarter + , subq_18.booking__ds__year + , subq_18.booking__ds__extract_year + , subq_18.booking__ds__extract_quarter + , subq_18.booking__ds__extract_month + , subq_18.booking__ds__extract_day + , subq_18.booking__ds__extract_dow + , subq_18.booking__ds__extract_doy + , subq_18.booking__ds_partitioned__day + , subq_18.booking__ds_partitioned__week + , subq_18.booking__ds_partitioned__month + , subq_18.booking__ds_partitioned__quarter + , subq_18.booking__ds_partitioned__year + , subq_18.booking__ds_partitioned__extract_year + , subq_18.booking__ds_partitioned__extract_quarter + , subq_18.booking__ds_partitioned__extract_month + , subq_18.booking__ds_partitioned__extract_day + , subq_18.booking__ds_partitioned__extract_dow + , subq_18.booking__ds_partitioned__extract_doy + , subq_18.booking__paid_at__day + , subq_18.booking__paid_at__week + , subq_18.booking__paid_at__month + , subq_18.booking__paid_at__quarter + , subq_18.booking__paid_at__year + , subq_18.booking__paid_at__extract_year + , subq_18.booking__paid_at__extract_quarter + , subq_18.booking__paid_at__extract_month + , subq_18.booking__paid_at__extract_day + , subq_18.booking__paid_at__extract_dow + , subq_18.booking__paid_at__extract_doy + , subq_18.metric_time__day + , subq_18.metric_time__week + , subq_18.metric_time__month + , subq_18.metric_time__quarter + , subq_18.metric_time__year + , subq_18.metric_time__extract_year + , subq_18.metric_time__extract_quarter + , subq_18.metric_time__extract_month + , subq_18.metric_time__extract_day + , subq_18.metric_time__extract_dow + , subq_18.metric_time__extract_doy + , subq_18.listing + , subq_18.guest + , subq_18.host + , subq_18.booking__listing + , subq_18.booking__guest + , subq_18.booking__host + , subq_18.is_instant + , subq_18.booking__is_instant + , subq_18.bookings + , subq_18.instant_bookings + , subq_18.booking_value + , subq_18.max_booking_value + , subq_18.min_booking_value + , subq_18.bookers + , subq_18.average_booking_value + , subq_18.referred_bookings + , subq_18.median_booking_value + , subq_18.booking_value_p99 + , subq_18.discrete_booking_value_p99 + , subq_18.approximate_continuous_booking_value_p99 + , subq_18.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_20.ds__day - , subq_20.ds__week - , subq_20.ds__month - , subq_20.ds__quarter - , subq_20.ds__year - , subq_20.ds__extract_year - , subq_20.ds__extract_quarter - , subq_20.ds__extract_month - , subq_20.ds__extract_day - , subq_20.ds__extract_dow - , subq_20.ds__extract_doy - , subq_20.ds_partitioned__day - , subq_20.ds_partitioned__week - , subq_20.ds_partitioned__month - , subq_20.ds_partitioned__quarter - , subq_20.ds_partitioned__year - , subq_20.ds_partitioned__extract_year - , subq_20.ds_partitioned__extract_quarter - , subq_20.ds_partitioned__extract_month - , subq_20.ds_partitioned__extract_day - , subq_20.ds_partitioned__extract_dow - , subq_20.ds_partitioned__extract_doy - , subq_20.paid_at__day - , subq_20.paid_at__week - , subq_20.paid_at__month - , subq_20.paid_at__quarter - , subq_20.paid_at__year - , subq_20.paid_at__extract_year - , subq_20.paid_at__extract_quarter - , subq_20.paid_at__extract_month - , subq_20.paid_at__extract_day - , subq_20.paid_at__extract_dow - , subq_20.paid_at__extract_doy - , subq_20.booking__ds__day - , subq_20.booking__ds__week - , subq_20.booking__ds__month - , subq_20.booking__ds__quarter - , subq_20.booking__ds__year - , subq_20.booking__ds__extract_year - , subq_20.booking__ds__extract_quarter - , subq_20.booking__ds__extract_month - , subq_20.booking__ds__extract_day - , subq_20.booking__ds__extract_dow - , subq_20.booking__ds__extract_doy - , subq_20.booking__ds_partitioned__day - , subq_20.booking__ds_partitioned__week - , subq_20.booking__ds_partitioned__month - , subq_20.booking__ds_partitioned__quarter - , subq_20.booking__ds_partitioned__year - , subq_20.booking__ds_partitioned__extract_year - , subq_20.booking__ds_partitioned__extract_quarter - , subq_20.booking__ds_partitioned__extract_month - , subq_20.booking__ds_partitioned__extract_day - , subq_20.booking__ds_partitioned__extract_dow - , subq_20.booking__ds_partitioned__extract_doy - , subq_20.booking__paid_at__day - , subq_20.booking__paid_at__week - , subq_20.booking__paid_at__month - , subq_20.booking__paid_at__quarter - , subq_20.booking__paid_at__year - , subq_20.booking__paid_at__extract_year - , subq_20.booking__paid_at__extract_quarter - , subq_20.booking__paid_at__extract_month - , subq_20.booking__paid_at__extract_day - , subq_20.booking__paid_at__extract_dow - , subq_20.booking__paid_at__extract_doy - , subq_20.ds__day AS metric_time__day - , subq_20.ds__week AS metric_time__week - , subq_20.ds__month AS metric_time__month - , subq_20.ds__quarter AS metric_time__quarter - , subq_20.ds__year AS metric_time__year - , subq_20.ds__extract_year AS metric_time__extract_year - , subq_20.ds__extract_quarter AS metric_time__extract_quarter - , subq_20.ds__extract_month AS metric_time__extract_month - , subq_20.ds__extract_day AS metric_time__extract_day - , subq_20.ds__extract_dow AS metric_time__extract_dow - , subq_20.ds__extract_doy AS metric_time__extract_doy - , subq_20.listing - , subq_20.guest - , subq_20.host - , subq_20.booking__listing - , subq_20.booking__guest - , subq_20.booking__host - , subq_20.is_instant - , subq_20.booking__is_instant - , subq_20.bookings - , subq_20.instant_bookings - , subq_20.booking_value - , subq_20.max_booking_value - , subq_20.min_booking_value - , subq_20.bookers - , subq_20.average_booking_value - , subq_20.referred_bookings - , subq_20.median_booking_value - , subq_20.booking_value_p99 - , subq_20.discrete_booking_value_p99 - , subq_20.approximate_continuous_booking_value_p99 - , subq_20.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -1437,12 +1437,12 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_20 - ) subq_21 + ) subq_0 + ) subq_18 WHERE booking__is_instant - ) subq_22 - ) subq_23 - ) subq_24 - ) subq_25 - ) subq_26 -) subq_27 + ) subq_19 + ) subq_20 + ) subq_21 + ) subq_22 + ) subq_23 +) subq_24 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0_optimized.sql index d58e04b195..5d8c5a8a39 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_nested_filters__plan0_optimized.sql @@ -14,9 +14,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - MAX(subq_37.average_booking_value) AS average_booking_value - , MAX(subq_37.bookings) AS bookings - , MAX(subq_43.booking_value) AS booking_value + MAX(subq_34.average_booking_value) AS average_booking_value + , MAX(subq_34.bookings) AS bookings + , MAX(subq_40.booking_value) AS booking_value FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['average_booking_value', 'bookings'] @@ -29,9 +29,9 @@ FROM ( -- Join Standard Outputs SELECT listings_latest_src_28000.is_lux AS listing__is_lux_latest - , subq_29.booking__is_instant AS booking__is_instant - , subq_29.bookings AS bookings - , subq_29.average_booking_value AS average_booking_value + , subq_26.booking__is_instant AS booking__is_instant + , subq_26.bookings AS bookings + , subq_26.average_booking_value AS average_booking_value FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -41,14 +41,14 @@ FROM ( , 1 AS bookings , booking_value AS average_booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_29 + ) subq_26 LEFT OUTER JOIN ***************************.dim_listings_latest listings_latest_src_28000 ON - subq_29.listing = listings_latest_src_28000.listing_id - ) subq_33 + subq_26.listing = listings_latest_src_28000.listing_id + ) subq_30 WHERE (listing__is_lux_latest) AND (booking__is_instant) - ) subq_37 + ) subq_34 CROSS JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value',] @@ -63,8 +63,8 @@ FROM ( is_instant AS booking__is_instant , booking_value FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_39 + ) subq_36 WHERE booking__is_instant - ) subq_43 - ) subq_44 -) subq_45 + ) subq_40 + ) subq_41 +) subq_42 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql index 9e03914663..b06e2c918a 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_at_start_of_month AS bookings_growth_since_start_of_month FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_at_start_of_month) AS bookings_at_start_of_month + , MAX(subq_12.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_at_start_of_month + subq_11.booking__ds__day + , subq_11.bookings AS bookings_at_start_of_month FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_TRUNC('month', subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_TRUNC('month', subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql index e934169d12..0d1de668d0 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_to_grain_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_at_start_of_month) AS bookings_at_start_of_month + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_at_start_of_month) AS bookings_at_start_of_month FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_TRUNC('month', time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql index 45f03b887c..9c1e5ec540 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0.sql @@ -6,14 +6,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_16.metric_time__month + subq_15.metric_time__month , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) AS metric_time__month + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) AS metric_time__month , MAX(subq_9.booking_value) AS booking_value - , MAX(subq_15.bookers) AS bookers + , MAX(subq_14.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -478,220 +478,220 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_14.metric_time__month - , subq_14.bookers + subq_13.metric_time__month + , subq_13.bookers FROM ( -- Aggregate Measures SELECT - subq_13.metric_time__month - , COUNT(DISTINCT subq_13.bookers) AS bookers + subq_12.metric_time__month + , COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__month'] SELECT - subq_12.metric_time__month - , subq_12.bookers + subq_11.metric_time__month + , subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_11.ds__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds_partitioned__day - , subq_11.ds_partitioned__week - , subq_11.ds_partitioned__month - , subq_11.ds_partitioned__quarter - , subq_11.ds_partitioned__year - , subq_11.ds_partitioned__extract_year - , subq_11.ds_partitioned__extract_quarter - , subq_11.ds_partitioned__extract_month - , subq_11.ds_partitioned__extract_day - , subq_11.ds_partitioned__extract_dow - , subq_11.ds_partitioned__extract_doy - , subq_11.paid_at__day - , subq_11.paid_at__week - , subq_11.paid_at__month - , subq_11.paid_at__quarter - , subq_11.paid_at__year - , subq_11.paid_at__extract_year - , subq_11.paid_at__extract_quarter - , subq_11.paid_at__extract_month - , subq_11.paid_at__extract_day - , subq_11.paid_at__extract_dow - , subq_11.paid_at__extract_doy - , subq_11.booking__ds__day - , subq_11.booking__ds__week - , subq_11.booking__ds__month - , subq_11.booking__ds__quarter - , subq_11.booking__ds__year - , subq_11.booking__ds__extract_year - , subq_11.booking__ds__extract_quarter - , subq_11.booking__ds__extract_month - , subq_11.booking__ds__extract_day - , subq_11.booking__ds__extract_dow - , subq_11.booking__ds__extract_doy - , subq_11.booking__ds_partitioned__day - , subq_11.booking__ds_partitioned__week - , subq_11.booking__ds_partitioned__month - , subq_11.booking__ds_partitioned__quarter - , subq_11.booking__ds_partitioned__year - , subq_11.booking__ds_partitioned__extract_year - , subq_11.booking__ds_partitioned__extract_quarter - , subq_11.booking__ds_partitioned__extract_month - , subq_11.booking__ds_partitioned__extract_day - , subq_11.booking__ds_partitioned__extract_dow - , subq_11.booking__ds_partitioned__extract_doy - , subq_11.booking__paid_at__day - , subq_11.booking__paid_at__week - , subq_11.booking__paid_at__month - , subq_11.booking__paid_at__quarter - , subq_11.booking__paid_at__year - , subq_11.booking__paid_at__extract_year - , subq_11.booking__paid_at__extract_quarter - , subq_11.booking__paid_at__extract_month - , subq_11.booking__paid_at__extract_day - , subq_11.booking__paid_at__extract_dow - , subq_11.booking__paid_at__extract_doy - , subq_11.metric_time__day - , subq_11.metric_time__week - , subq_11.metric_time__month - , subq_11.metric_time__quarter - , subq_11.metric_time__year - , subq_11.metric_time__extract_year - , subq_11.metric_time__extract_quarter - , subq_11.metric_time__extract_month - , subq_11.metric_time__extract_day - , subq_11.metric_time__extract_dow - , subq_11.metric_time__extract_doy - , subq_11.listing - , subq_11.guest - , subq_11.host - , subq_11.booking__listing - , subq_11.booking__guest - , subq_11.booking__host - , subq_11.is_instant - , subq_11.booking__is_instant - , subq_11.bookings - , subq_11.instant_bookings - , subq_11.booking_value - , subq_11.max_booking_value - , subq_11.min_booking_value - , subq_11.bookers - , subq_11.average_booking_value - , subq_11.referred_bookings - , subq_11.median_booking_value - , subq_11.booking_value_p99 - , subq_11.discrete_booking_value_p99 - , subq_11.approximate_continuous_booking_value_p99 - , subq_11.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_partitioned__day - , subq_10.ds_partitioned__week - , subq_10.ds_partitioned__month - , subq_10.ds_partitioned__quarter - , subq_10.ds_partitioned__year - , subq_10.ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy - , subq_10.paid_at__day - , subq_10.paid_at__week - , subq_10.paid_at__month - , subq_10.paid_at__quarter - , subq_10.paid_at__year - , subq_10.paid_at__extract_year - , subq_10.paid_at__extract_quarter - , subq_10.paid_at__extract_month - , subq_10.paid_at__extract_day - , subq_10.paid_at__extract_dow - , subq_10.paid_at__extract_doy - , subq_10.booking__ds__day - , subq_10.booking__ds__week - , subq_10.booking__ds__month - , subq_10.booking__ds__quarter - , subq_10.booking__ds__year - , subq_10.booking__ds__extract_year - , subq_10.booking__ds__extract_quarter - , subq_10.booking__ds__extract_month - , subq_10.booking__ds__extract_day - , subq_10.booking__ds__extract_dow - , subq_10.booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day - , subq_10.booking__paid_at__week - , subq_10.booking__paid_at__month - , subq_10.booking__paid_at__quarter - , subq_10.booking__paid_at__year - , subq_10.booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy - , subq_10.ds__day AS metric_time__day - , subq_10.ds__week AS metric_time__week - , subq_10.ds__month AS metric_time__month - , subq_10.ds__quarter AS metric_time__quarter - , subq_10.ds__year AS metric_time__year - , subq_10.ds__extract_year AS metric_time__extract_year - , subq_10.ds__extract_quarter AS metric_time__extract_quarter - , subq_10.ds__extract_month AS metric_time__extract_month - , subq_10.ds__extract_day AS metric_time__extract_day - , subq_10.ds__extract_dow AS metric_time__extract_dow - , subq_10.ds__extract_doy AS metric_time__extract_doy - , subq_10.listing - , subq_10.guest - , subq_10.host - , subq_10.booking__listing - , subq_10.booking__guest - , subq_10.booking__host - , subq_10.is_instant - , subq_10.booking__is_instant - , subq_10.bookings - , subq_10.instant_bookings - , subq_10.booking_value - , subq_10.max_booking_value - , subq_10.min_booking_value - , subq_10.bookers - , subq_10.average_booking_value - , subq_10.referred_bookings - , subq_10.median_booking_value - , subq_10.booking_value_p99 - , subq_10.discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -784,17 +784,17 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_10 WHERE metric_time__day = '2020-01-01' - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 GROUP BY - subq_13.metric_time__month - ) subq_14 - ) subq_15 + subq_12.metric_time__month + ) subq_13 + ) subq_14 ON - subq_9.metric_time__month = subq_15.metric_time__month + subq_9.metric_time__month = subq_14.metric_time__month GROUP BY - COALESCE(subq_9.metric_time__month, subq_15.metric_time__month) -) subq_16 + COALESCE(subq_9.metric_time__month, subq_14.metric_time__month) +) subq_15 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql index 2661f774d9..061e747ba4 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_filter_and_query_have_different_granularities__plan0_optimized.sql @@ -22,9 +22,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) AS metric_time__month - , MAX(subq_26.booking_value) AS booking_value - , MAX(subq_31.bookers) AS bookers + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) AS metric_time__month + , MAX(subq_25.booking_value) AS booking_value + , MAX(subq_30.bookers) AS bookers FROM ( -- Constrain Output with WHERE -- Pass Only Elements: ['booking_value', 'metric_time__month'] @@ -44,11 +44,11 @@ FROM ( sma_28009_cte sma_28009_cte ON DATE_ADD('week', -1, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day - ) subq_22 + ) subq_21 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_26 + ) subq_25 FULL OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookers', 'metric_time__month'] @@ -62,15 +62,16 @@ FROM ( SELECT metric_time__day , metric_time__month + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_27 + ) subq_26 WHERE metric_time__day = '2020-01-01' GROUP BY metric_time__month - ) subq_31 + ) subq_30 ON - subq_26.metric_time__month = subq_31.metric_time__month + subq_25.metric_time__month = subq_30.metric_time__month GROUP BY - COALESCE(subq_26.metric_time__month, subq_31.metric_time__month) -) subq_32 + COALESCE(subq_25.metric_time__month, subq_30.metric_time__month) +) subq_31 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql index 6a95b8b698..a79092a357 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0.sql @@ -6,18 +6,18 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__day - , subq_14.metric_time__month - , subq_14.metric_time__year + subq_13.metric_time__day + , subq_13.metric_time__month + , subq_13.metric_time__year , booking_value * 0.05 / bookers AS booking_fees_last_week_per_booker_this_week FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) AS metric_time__day - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) AS metric_time__month - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) AS metric_time__year + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) AS metric_time__day + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) AS metric_time__month + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) AS metric_time__year , MAX(subq_8.booking_value) AS booking_value - , MAX(subq_13.bookers) AS bookers + , MAX(subq_12.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT @@ -388,125 +388,125 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , subq_12.metric_time__month - , subq_12.metric_time__year - , subq_12.bookers + subq_11.metric_time__day + , subq_11.metric_time__month + , subq_11.metric_time__year + , subq_11.bookers FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - , COUNT(DISTINCT subq_11.bookers) AS bookers + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + , COUNT(DISTINCT subq_10.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] SELECT - subq_10.metric_time__day - , subq_10.metric_time__month - , subq_10.metric_time__year - , subq_10.bookers + subq_9.metric_time__day + , subq_9.metric_time__month + , subq_9.metric_time__year + , subq_9.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -599,25 +599,25 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_0 + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__day - , subq_11.metric_time__month - , subq_11.metric_time__year - ) subq_12 - ) subq_13 + subq_10.metric_time__day + , subq_10.metric_time__month + , subq_10.metric_time__year + ) subq_11 + ) subq_12 ON ( - subq_8.metric_time__day = subq_13.metric_time__day + subq_8.metric_time__day = subq_12.metric_time__day ) AND ( - subq_8.metric_time__month = subq_13.metric_time__month + subq_8.metric_time__month = subq_12.metric_time__month ) AND ( - subq_8.metric_time__year = subq_13.metric_time__year + subq_8.metric_time__year = subq_12.metric_time__year ) GROUP BY - COALESCE(subq_8.metric_time__day, subq_13.metric_time__day) - , COALESCE(subq_8.metric_time__month, subq_13.metric_time__month) - , COALESCE(subq_8.metric_time__year, subq_13.metric_time__year) -) subq_14 + COALESCE(subq_8.metric_time__day, subq_12.metric_time__day) + , COALESCE(subq_8.metric_time__month, subq_12.metric_time__month) + , COALESCE(subq_8.metric_time__year, subq_12.metric_time__year) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql index 31ab03c38f..def4c9db6e 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_metric_multiple_granularities__plan0_optimized.sql @@ -25,11 +25,11 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) AS metric_time__day - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) AS metric_time__month - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) AS metric_time__year - , MAX(subq_23.booking_value) AS booking_value - , MAX(subq_27.bookers) AS bookers + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) AS metric_time__day + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) AS metric_time__month + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) AS metric_time__year + , MAX(subq_22.booking_value) AS booking_value + , MAX(subq_26.bookers) AS bookers FROM ( -- Join to Time Spine Dataset -- Pass Only Elements: ['booking_value', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -49,7 +49,7 @@ FROM ( time_spine_src_28006.ds , DATE_TRUNC('month', time_spine_src_28006.ds) , DATE_TRUNC('year', time_spine_src_28006.ds) - ) subq_23 + ) subq_22 FULL OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'metric_time__day', 'metric_time__month', 'metric_time__year'] @@ -65,17 +65,17 @@ FROM ( metric_time__day , metric_time__month , metric_time__year - ) subq_27 + ) subq_26 ON ( - subq_23.metric_time__day = subq_27.metric_time__day + subq_22.metric_time__day = subq_26.metric_time__day ) AND ( - subq_23.metric_time__month = subq_27.metric_time__month + subq_22.metric_time__month = subq_26.metric_time__month ) AND ( - subq_23.metric_time__year = subq_27.metric_time__year + subq_22.metric_time__year = subq_26.metric_time__year ) GROUP BY - COALESCE(subq_23.metric_time__day, subq_27.metric_time__day) - , COALESCE(subq_23.metric_time__month, subq_27.metric_time__month) - , COALESCE(subq_23.metric_time__year, subq_27.metric_time__year) -) subq_28 + COALESCE(subq_22.metric_time__day, subq_26.metric_time__day) + , COALESCE(subq_22.metric_time__month, subq_26.metric_time__month) + , COALESCE(subq_22.metric_time__year, subq_26.metric_time__year) +) subq_27 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql index 97c0865ed1..cd6f662ecc 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.booking__ds__day + subq_13.booking__ds__day , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) AS booking__ds__day + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) AS booking__ds__day , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,138 +230,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.booking__ds__day - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.booking__ds__day + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.booking__ds__day - , SUM(subq_11.bookings) AS bookings + subq_10.booking__ds__day + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'booking__ds__day'] SELECT - subq_10.booking__ds__day - , subq_10.bookings + subq_9.booking__ds__day + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.booking__ds__day AS booking__ds__day - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__day AS metric_time__day - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.booking__ds__day AS booking__ds__day + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['booking__ds__day',] SELECT - subq_8.booking__ds__day + subq_7.booking__ds__day FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS booking__ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS booking__ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -378,110 +378,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -574,18 +574,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_ADD('day', -14, subq_9.booking__ds__day) = subq_6.booking__ds__day - ) subq_10 - ) subq_11 + DATE_ADD('day', -14, subq_8.booking__ds__day) = subq_5.booking__ds__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.booking__ds__day - ) subq_12 - ) subq_13 + subq_10.booking__ds__day + ) subq_11 + ) subq_12 ON - subq_4.booking__ds__day = subq_13.booking__ds__day + subq_4.booking__ds__day = subq_12.booking__ds__day GROUP BY - COALESCE(subq_4.booking__ds__day, subq_13.booking__ds__day) -) subq_14 + COALESCE(subq_4.booking__ds__day, subq_12.booking__ds__day) +) subq_13 diff --git a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql index 164ffca118..24e64f2bfa 100644 --- a/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_derived_metric_rendering.py/SqlPlan/Trino/test_offset_window_with_agg_time_dim__plan0_optimized.sql @@ -18,9 +18,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) AS booking__ds__day - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) AS booking__ds__day + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -32,7 +32,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY booking__ds__day - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'booking__ds__day'] @@ -48,9 +48,9 @@ FROM ( DATE_ADD('day', -14, time_spine_src_28006.ds) = sma_28009_cte.booking__ds__day GROUP BY time_spine_src_28006.ds - ) subq_27 + ) subq_26 ON - subq_19.booking__ds__day = subq_27.booking__ds__day + subq_18.booking__ds__day = subq_26.booking__ds__day GROUP BY - COALESCE(subq_19.booking__ds__day, subq_27.booking__ds__day) -) subq_28 + COALESCE(subq_18.booking__ds__day, subq_26.booking__ds__day) +) subq_27 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql index 9d56aa0f23..0bd0f4e43c 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_SUB(CAST(subq_13.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_SUB(CAST(subq_12.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY metric_time__day - ) subq_16 - ) subq_17 + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY metric_time__day -) subq_18 +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 403db7de6f..4752eab9ba 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( DATE_SUB(CAST(rss_28018_cte.ds__day AS DATETIME), INTERVAL 14 day) = sma_28009_cte.metric_time__day GROUP BY metric_time__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY metric_time__day -) subq_36 +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql index b91456b9a1..500b3c6d0a 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY metric_time__day - ) subq_5 + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql index e1ed10542b..36dce3a7a5 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/BigQuery/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATETIME_TRUNC(ds, isoweek) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATETIME_TRUNC(ds, day) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql index 45936b8f05..b6b2b91489 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(day, -14, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(day, -14, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 05ed03750a..b7bfeb56b5 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( DATEADD(day, -14, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql index da884c4046..939973879a 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql index d1c5e27575..ce8ac751c1 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Databricks/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql index 6809466dcd..a9776f2c07 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - subq_13.metric_time__day - MAKE_INTERVAL(days => 14) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + subq_12.metric_time__day - MAKE_INTERVAL(days => 14) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 17633a2fca..1e639e49ff 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( rss_28018_cte.ds__day - MAKE_INTERVAL(days => 14) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql index a012a4779e..467dfcc709 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql index 2859b9d803..5b9b666867 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Postgres/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql index e0bc6c7ff1..61d82df197 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(day, -14, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(day, -14, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 1fed8fc201..e42780b305 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( DATEADD(day, -14, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql index 6ff201115e..eec483afbe 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql index 5e5af3be24..f93fd4c65c 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Redshift/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql index c1f5eb6fbf..02d67f383e 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATEADD(day, -14, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATEADD(day, -14, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 5b566d2991..c10f58514a 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( DATEADD(day, -14, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql index 007fc30da5..6521f69a78 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql index bce50988dd..95eaca074e 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Snowflake/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN '2020-01-03' AND '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN '2020-01-03' AND '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql index 94e6ef111e..c0b743aa35 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_18.metric_time__day + subq_17.metric_time__day , bookings_fill_nulls_with_0 - bookings_2_weeks_ago AS bookings_growth_2_weeks_fill_nulls_with_0_for_non_offset FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) AS metric_time__day + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) AS metric_time__day , COALESCE(MAX(subq_8.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_17.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_16.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -276,138 +276,138 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_16.metric_time__day - , subq_16.bookings AS bookings_2_weeks_ago + subq_15.metric_time__day + , subq_15.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_15.metric_time__day - , SUM(subq_15.bookings) AS bookings + subq_14.metric_time__day + , SUM(subq_14.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_14.metric_time__day - , subq_14.bookings + subq_13.metric_time__day + , subq_13.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_13.metric_time__day AS metric_time__day - , subq_10.ds__day AS ds__day - , subq_10.ds__week AS ds__week - , subq_10.ds__month AS ds__month - , subq_10.ds__quarter AS ds__quarter - , subq_10.ds__year AS ds__year - , subq_10.ds__extract_year AS ds__extract_year - , subq_10.ds__extract_quarter AS ds__extract_quarter - , subq_10.ds__extract_month AS ds__extract_month - , subq_10.ds__extract_day AS ds__extract_day - , subq_10.ds__extract_dow AS ds__extract_dow - , subq_10.ds__extract_doy AS ds__extract_doy - , subq_10.ds_partitioned__day AS ds_partitioned__day - , subq_10.ds_partitioned__week AS ds_partitioned__week - , subq_10.ds_partitioned__month AS ds_partitioned__month - , subq_10.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_10.ds_partitioned__year AS ds_partitioned__year - , subq_10.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_10.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_10.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_10.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_10.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_10.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_10.paid_at__day AS paid_at__day - , subq_10.paid_at__week AS paid_at__week - , subq_10.paid_at__month AS paid_at__month - , subq_10.paid_at__quarter AS paid_at__quarter - , subq_10.paid_at__year AS paid_at__year - , subq_10.paid_at__extract_year AS paid_at__extract_year - , subq_10.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_10.paid_at__extract_month AS paid_at__extract_month - , subq_10.paid_at__extract_day AS paid_at__extract_day - , subq_10.paid_at__extract_dow AS paid_at__extract_dow - , subq_10.paid_at__extract_doy AS paid_at__extract_doy - , subq_10.booking__ds__day AS booking__ds__day - , subq_10.booking__ds__week AS booking__ds__week - , subq_10.booking__ds__month AS booking__ds__month - , subq_10.booking__ds__quarter AS booking__ds__quarter - , subq_10.booking__ds__year AS booking__ds__year - , subq_10.booking__ds__extract_year AS booking__ds__extract_year - , subq_10.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_10.booking__ds__extract_month AS booking__ds__extract_month - , subq_10.booking__ds__extract_day AS booking__ds__extract_day - , subq_10.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_10.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_10.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_10.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_10.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_10.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_10.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_10.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_10.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_10.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_10.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_10.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_10.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_10.booking__paid_at__day AS booking__paid_at__day - , subq_10.booking__paid_at__week AS booking__paid_at__week - , subq_10.booking__paid_at__month AS booking__paid_at__month - , subq_10.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_10.booking__paid_at__year AS booking__paid_at__year - , subq_10.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_10.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_10.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_10.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_10.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_10.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_10.metric_time__week AS metric_time__week - , subq_10.metric_time__month AS metric_time__month - , subq_10.metric_time__quarter AS metric_time__quarter - , subq_10.metric_time__year AS metric_time__year - , subq_10.metric_time__extract_year AS metric_time__extract_year - , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_10.metric_time__extract_month AS metric_time__extract_month - , subq_10.metric_time__extract_day AS metric_time__extract_day - , subq_10.metric_time__extract_dow AS metric_time__extract_dow - , subq_10.metric_time__extract_doy AS metric_time__extract_doy - , subq_10.listing AS listing - , subq_10.guest AS guest - , subq_10.host AS host - , subq_10.booking__listing AS booking__listing - , subq_10.booking__guest AS booking__guest - , subq_10.booking__host AS booking__host - , subq_10.is_instant AS is_instant - , subq_10.booking__is_instant AS booking__is_instant - , subq_10.bookings AS bookings - , subq_10.instant_bookings AS instant_bookings - , subq_10.booking_value AS booking_value - , subq_10.max_booking_value AS max_booking_value - , subq_10.min_booking_value AS min_booking_value - , subq_10.bookers AS bookers - , subq_10.average_booking_value AS average_booking_value - , subq_10.referred_bookings AS referred_bookings - , subq_10.median_booking_value AS median_booking_value - , subq_10.booking_value_p99 AS booking_value_p99 - , subq_10.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_10.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_10.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_12.metric_time__day AS metric_time__day + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_12.metric_time__day + subq_11.metric_time__day FROM ( -- Change Column Aliases SELECT - subq_11.ds__day AS metric_time__day - , subq_11.ds__week - , subq_11.ds__month - , subq_11.ds__quarter - , subq_11.ds__year - , subq_11.ds__extract_year - , subq_11.ds__extract_quarter - , subq_11.ds__extract_month - , subq_11.ds__extract_day - , subq_11.ds__extract_dow - , subq_11.ds__extract_doy - , subq_11.ds__martian_day + subq_10.ds__day AS metric_time__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -424,110 +424,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_10 + ) subq_11 + ) subq_12 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_partitioned__day - , subq_9.ds_partitioned__week - , subq_9.ds_partitioned__month - , subq_9.ds_partitioned__quarter - , subq_9.ds_partitioned__year - , subq_9.ds_partitioned__extract_year - , subq_9.ds_partitioned__extract_quarter - , subq_9.ds_partitioned__extract_month - , subq_9.ds_partitioned__extract_day - , subq_9.ds_partitioned__extract_dow - , subq_9.ds_partitioned__extract_doy - , subq_9.paid_at__day - , subq_9.paid_at__week - , subq_9.paid_at__month - , subq_9.paid_at__quarter - , subq_9.paid_at__year - , subq_9.paid_at__extract_year - , subq_9.paid_at__extract_quarter - , subq_9.paid_at__extract_month - , subq_9.paid_at__extract_day - , subq_9.paid_at__extract_dow - , subq_9.paid_at__extract_doy - , subq_9.booking__ds__day - , subq_9.booking__ds__week - , subq_9.booking__ds__month - , subq_9.booking__ds__quarter - , subq_9.booking__ds__year - , subq_9.booking__ds__extract_year - , subq_9.booking__ds__extract_quarter - , subq_9.booking__ds__extract_month - , subq_9.booking__ds__extract_day - , subq_9.booking__ds__extract_dow - , subq_9.booking__ds__extract_doy - , subq_9.booking__ds_partitioned__day - , subq_9.booking__ds_partitioned__week - , subq_9.booking__ds_partitioned__month - , subq_9.booking__ds_partitioned__quarter - , subq_9.booking__ds_partitioned__year - , subq_9.booking__ds_partitioned__extract_year - , subq_9.booking__ds_partitioned__extract_quarter - , subq_9.booking__ds_partitioned__extract_month - , subq_9.booking__ds_partitioned__extract_day - , subq_9.booking__ds_partitioned__extract_dow - , subq_9.booking__ds_partitioned__extract_doy - , subq_9.booking__paid_at__day - , subq_9.booking__paid_at__week - , subq_9.booking__paid_at__month - , subq_9.booking__paid_at__quarter - , subq_9.booking__paid_at__year - , subq_9.booking__paid_at__extract_year - , subq_9.booking__paid_at__extract_quarter - , subq_9.booking__paid_at__extract_month - , subq_9.booking__paid_at__extract_day - , subq_9.booking__paid_at__extract_dow - , subq_9.booking__paid_at__extract_doy - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.listing - , subq_9.guest - , subq_9.host - , subq_9.booking__listing - , subq_9.booking__guest - , subq_9.booking__host - , subq_9.is_instant - , subq_9.booking__is_instant - , subq_9.bookings - , subq_9.instant_bookings - , subq_9.booking_value - , subq_9.max_booking_value - , subq_9.min_booking_value - , subq_9.bookers - , subq_9.average_booking_value - , subq_9.referred_bookings - , subq_9.median_booking_value - , subq_9.booking_value_p99 - , subq_9.discrete_booking_value_p99 - , subq_9.approximate_continuous_booking_value_p99 - , subq_9.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -620,18 +620,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_9 - ) subq_10 + ) subq_0 + ) subq_9 ON - DATE_ADD('day', -14, subq_13.metric_time__day) = subq_10.metric_time__day - ) subq_14 - ) subq_15 + DATE_ADD('day', -14, subq_12.metric_time__day) = subq_9.metric_time__day + ) subq_13 + ) subq_14 GROUP BY - subq_15.metric_time__day - ) subq_16 - ) subq_17 + subq_14.metric_time__day + ) subq_15 + ) subq_16 ON - subq_8.metric_time__day = subq_17.metric_time__day + subq_8.metric_time__day = subq_16.metric_time__day GROUP BY - COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) -) subq_18 + COALESCE(subq_8.metric_time__day, subq_16.metric_time__day) +) subq_17 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql index 561bc2d1b7..ad59191f95 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_derived_fill_nulls_for_one_input_metric__plan0_optimized.sql @@ -25,9 +25,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) AS metric_time__day - , COALESCE(MAX(subq_27.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 - , MAX(subq_35.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) AS metric_time__day + , COALESCE(MAX(subq_26.bookings_fill_nulls_with_0), 0) AS bookings_fill_nulls_with_0 + , MAX(subq_34.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -37,7 +37,7 @@ FROM ( -- Join to Time Spine Dataset SELECT rss_28018_cte.ds__day AS metric_time__day - , subq_22.bookings AS bookings + , subq_21.bookings AS bookings FROM rss_28018_cte rss_28018_cte LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 @@ -49,11 +49,11 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__day - ) subq_22 + ) subq_21 ON - rss_28018_cte.ds__day = subq_22.metric_time__day - ) subq_26 - ) subq_27 + rss_28018_cte.ds__day = subq_21.metric_time__day + ) subq_25 + ) subq_26 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -69,9 +69,9 @@ FROM ( DATE_ADD('day', -14, rss_28018_cte.ds__day) = sma_28009_cte.metric_time__day GROUP BY rss_28018_cte.ds__day - ) subq_35 + ) subq_34 ON - subq_27.metric_time__day = subq_35.metric_time__day + subq_26.metric_time__day = subq_34.metric_time__day GROUP BY - COALESCE(subq_27.metric_time__day, subq_35.metric_time__day) -) subq_36 + COALESCE(subq_26.metric_time__day, subq_34.metric_time__day) +) subq_35 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql index 395a3dceeb..bc3bfe77a2 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0.sql @@ -4,67 +4,67 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_12.metric_time__day - , COALESCE(subq_12.bookings, 0) AS bookings_fill_nulls_with_0 + subq_13.metric_time__day + , COALESCE(subq_13.bookings, 0) AS bookings_fill_nulls_with_0 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_11.metric_time__day - , subq_11.bookings + subq_12.metric_time__day + , subq_12.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_10.metric_time__day AS metric_time__day - , subq_5.bookings AS bookings + subq_11.metric_time__day AS metric_time__day + , subq_6.bookings AS bookings FROM ( -- Pass Only Elements: ['metric_time__day',] SELECT - subq_9.metric_time__day + subq_10.metric_time__day FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds__martian_day + subq_9.metric_time__day + , subq_9.metric_time__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.ds__martian_day FROM ( -- Constrain Output with WHERE SELECT - subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_8.metric_time__day + , subq_8.metric_time__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds__martian_day FROM ( -- Change Column Aliases SELECT - subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.ds__martian_day + subq_7.ds__day AS metric_time__day + , subq_7.ds__week AS metric_time__week + , subq_7.ds__month + , subq_7.ds__quarter + , subq_7.ds__year + , subq_7.ds__extract_year + , subq_7.ds__extract_quarter + , subq_7.ds__extract_month + , subq_7.ds__extract_day + , subq_7.ds__extract_dow + , subq_7.ds__extract_doy + , subq_7.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -81,326 +81,326 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 WHERE metric_time__week > '2020-01-01' - ) subq_8 - WHERE subq_8.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' - ) subq_9 - ) subq_10 + ) subq_9 + WHERE subq_9.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' + ) subq_10 + ) subq_11 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_4.metric_time__day - , SUM(subq_4.bookings) AS bookings + subq_5.metric_time__day + , SUM(subq_5.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__day'] SELECT - subq_3.metric_time__day - , subq_3.bookings + subq_4.metric_time__day + , subq_4.bookings FROM ( -- Constrain Output with WHERE SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.metric_time__day - , subq_2.metric_time__week - , subq_2.metric_time__month - , subq_2.metric_time__quarter - , subq_2.metric_time__year - , subq_2.metric_time__extract_year - , subq_2.metric_time__extract_quarter - , subq_2.metric_time__extract_month - , subq_2.metric_time__extract_day - , subq_2.metric_time__extract_dow - , subq_2.metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.metric_time__day + , subq_3.metric_time__week + , subq_3.metric_time__month + , subq_3.metric_time__quarter + , subq_3.metric_time__year + , subq_3.metric_time__extract_year + , subq_3.metric_time__extract_quarter + , subq_3.metric_time__extract_month + , subq_3.metric_time__extract_day + , subq_3.metric_time__extract_dow + , subq_3.metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.paid_at__day + , subq_2.paid_at__week + , subq_2.paid_at__month + , subq_2.paid_at__quarter + , subq_2.paid_at__year + , subq_2.paid_at__extract_year + , subq_2.paid_at__extract_quarter + , subq_2.paid_at__extract_month + , subq_2.paid_at__extract_day + , subq_2.paid_at__extract_dow + , subq_2.paid_at__extract_doy + , subq_2.booking__ds__day + , subq_2.booking__ds__week + , subq_2.booking__ds__month + , subq_2.booking__ds__quarter + , subq_2.booking__ds__year + , subq_2.booking__ds__extract_year + , subq_2.booking__ds__extract_quarter + , subq_2.booking__ds__extract_month + , subq_2.booking__ds__extract_day + , subq_2.booking__ds__extract_dow + , subq_2.booking__ds__extract_doy + , subq_2.booking__ds_partitioned__day + , subq_2.booking__ds_partitioned__week + , subq_2.booking__ds_partitioned__month + , subq_2.booking__ds_partitioned__quarter + , subq_2.booking__ds_partitioned__year + , subq_2.booking__ds_partitioned__extract_year + , subq_2.booking__ds_partitioned__extract_quarter + , subq_2.booking__ds_partitioned__extract_month + , subq_2.booking__ds_partitioned__extract_day + , subq_2.booking__ds_partitioned__extract_dow + , subq_2.booking__ds_partitioned__extract_doy + , subq_2.booking__paid_at__day + , subq_2.booking__paid_at__week + , subq_2.booking__paid_at__month + , subq_2.booking__paid_at__quarter + , subq_2.booking__paid_at__year + , subq_2.booking__paid_at__extract_year + , subq_2.booking__paid_at__extract_quarter + , subq_2.booking__paid_at__extract_month + , subq_2.booking__paid_at__extract_day + , subq_2.booking__paid_at__extract_dow + , subq_2.booking__paid_at__extract_doy + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.listing + , subq_2.guest + , subq_2.host + , subq_2.booking__listing + , subq_2.booking__guest + , subq_2.booking__host + , subq_2.is_instant + , subq_2.booking__is_instant + , subq_2.bookings + , subq_2.instant_bookings + , subq_2.booking_value + , subq_2.max_booking_value + , subq_2.min_booking_value + , subq_2.bookers + , subq_2.average_booking_value + , subq_2.referred_bookings + , subq_2.median_booking_value + , subq_2.booking_value_p99 + , subq_2.discrete_booking_value_p99 + , subq_2.approximate_continuous_booking_value_p99 + , subq_2.approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.paid_at__day + , subq_1.paid_at__week + , subq_1.paid_at__month + , subq_1.paid_at__quarter + , subq_1.paid_at__year + , subq_1.paid_at__extract_year + , subq_1.paid_at__extract_quarter + , subq_1.paid_at__extract_month + , subq_1.paid_at__extract_day + , subq_1.paid_at__extract_dow + , subq_1.paid_at__extract_doy + , subq_1.booking__ds__day + , subq_1.booking__ds__week + , subq_1.booking__ds__month + , subq_1.booking__ds__quarter + , subq_1.booking__ds__year + , subq_1.booking__ds__extract_year + , subq_1.booking__ds__extract_quarter + , subq_1.booking__ds__extract_month + , subq_1.booking__ds__extract_day + , subq_1.booking__ds__extract_dow + , subq_1.booking__ds__extract_doy + , subq_1.booking__ds_partitioned__day + , subq_1.booking__ds_partitioned__week + , subq_1.booking__ds_partitioned__month + , subq_1.booking__ds_partitioned__quarter + , subq_1.booking__ds_partitioned__year + , subq_1.booking__ds_partitioned__extract_year + , subq_1.booking__ds_partitioned__extract_quarter + , subq_1.booking__ds_partitioned__extract_month + , subq_1.booking__ds_partitioned__extract_day + , subq_1.booking__ds_partitioned__extract_dow + , subq_1.booking__ds_partitioned__extract_doy + , subq_1.booking__paid_at__day + , subq_1.booking__paid_at__week + , subq_1.booking__paid_at__month + , subq_1.booking__paid_at__quarter + , subq_1.booking__paid_at__year + , subq_1.booking__paid_at__extract_year + , subq_1.booking__paid_at__extract_quarter + , subq_1.booking__paid_at__extract_month + , subq_1.booking__paid_at__extract_day + , subq_1.booking__paid_at__extract_dow + , subq_1.booking__paid_at__extract_doy + , subq_1.ds__day AS metric_time__day + , subq_1.ds__week AS metric_time__week + , subq_1.ds__month AS metric_time__month + , subq_1.ds__quarter AS metric_time__quarter + , subq_1.ds__year AS metric_time__year + , subq_1.ds__extract_year AS metric_time__extract_year + , subq_1.ds__extract_quarter AS metric_time__extract_quarter + , subq_1.ds__extract_month AS metric_time__extract_month + , subq_1.ds__extract_day AS metric_time__extract_day + , subq_1.ds__extract_dow AS metric_time__extract_dow + , subq_1.ds__extract_doy AS metric_time__extract_doy + , subq_1.listing + , subq_1.guest + , subq_1.host + , subq_1.booking__listing + , subq_1.booking__guest + , subq_1.booking__host + , subq_1.is_instant + , subq_1.booking__is_instant + , subq_1.bookings + , subq_1.instant_bookings + , subq_1.booking_value + , subq_1.max_booking_value + , subq_1.min_booking_value + , subq_1.bookers + , subq_1.average_booking_value + , subq_1.referred_bookings + , subq_1.median_booking_value + , subq_1.booking_value_p99 + , subq_1.discrete_booking_value_p99 + , subq_1.approximate_continuous_booking_value_p99 + , subq_1.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -493,18 +493,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' - ) subq_2 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' + ) subq_3 WHERE metric_time__week > '2020-01-01' - ) subq_3 - ) subq_4 + ) subq_4 + ) subq_5 GROUP BY - subq_4.metric_time__day - ) subq_5 + subq_5.metric_time__day + ) subq_6 ON - subq_10.metric_time__day = subq_5.metric_time__day - ) subq_11 - WHERE subq_11.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' -) subq_12 + subq_11.metric_time__day = subq_6.metric_time__day + ) subq_12 + WHERE subq_12.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' +) subq_13 diff --git a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql index 50e533170e..36941df119 100644 --- a/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_fill_nulls_with_rendering.py/SqlPlan/Trino/test_join_to_time_spine_with_filters__plan0_optimized.sql @@ -10,8 +10,8 @@ FROM ( -- Join to Time Spine Dataset -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] SELECT - subq_23.metric_time__day AS metric_time__day - , subq_18.bookings AS bookings + subq_24.metric_time__day AS metric_time__day + , subq_19.bookings AS bookings FROM ( -- Constrain Output with WHERE -- Constrain Time Range to [2020-01-03T00:00:00, 2020-01-05T00:00:00] @@ -25,13 +25,13 @@ FROM ( ds AS metric_time__day , DATE_TRUNC('week', ds) AS metric_time__week FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_20 + ) subq_21 WHERE ( metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' ) AND ( metric_time__week > '2020-01-01' ) - ) subq_23 + ) subq_24 LEFT OUTER JOIN ( -- Constrain Output with WHERE -- Pass Only Elements: ['bookings', 'metric_time__day'] @@ -49,12 +49,12 @@ FROM ( , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 WHERE DATE_TRUNC('day', ds) BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' - ) subq_15 + ) subq_16 WHERE metric_time__week > '2020-01-01' GROUP BY metric_time__day - ) subq_18 + ) subq_19 ON - subq_23.metric_time__day = subq_18.metric_time__day - WHERE subq_23.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' -) subq_25 + subq_24.metric_time__day = subq_19.metric_time__day + WHERE subq_24.metric_time__day BETWEEN timestamp '2020-01-03' AND timestamp '2020-01-05' +) subq_26 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0.sql index cb515d3f64..d661cebe23 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_SUB(CAST(subq_9.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_SUB(CAST(subq_8.metric_time__day AS DATETIME), INTERVAL 14 day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY metric_time__extract_dow - ) subq_12 - ) subq_13 + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY metric_time__extract_dow -) subq_14 +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql index 84f4512d66..e9cb2ccec1 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( DATE_SUB(CAST(time_spine_src_28006.ds AS DATETIME), INTERVAL 14 day) = sma_28009_cte.metric_time__day GROUP BY metric_time__extract_dow - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY metric_time__extract_dow -) subq_28 +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index ccadb64f1b..78886393ba 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY listing__user__bio_added_ts__minute -) subq_11 +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index e8fcc992f9..065736951b 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: BigQuery -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY listing__user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0.sql index 49ba7e7cd3..62e5ca4163 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , IF(EXTRACT(dayofweek FROM time_spine_src_28005.ts) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28005.ts) - 1) AS ts__extract_dow , EXTRACT(dayofyear FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(dayofyear FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY metric_time__hour - ) subq_4 + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index 008f6d913f..a823a7a8a5 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/BigQuery/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: BigQuery -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATETIME_TRUNC(archived_at, hour) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0.sql index f74ff34e10..54a9881ec8 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql index 75e919a6af..f3f7e854a5 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index c4bafd814c..ec89ac5d19 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index 08f375cc72..9fc04ad4cf 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: Databricks -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0.sql index b972426868..3c1a708c30 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , EXTRACT(DAYOFWEEK_ISO FROM time_spine_src_28005.ts) AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index 7bcc084193..4ba998f12b 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Databricks/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: Databricks -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0.sql index 9292eb3127..0ddad31f69 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - subq_9.metric_time__day - MAKE_INTERVAL(days => 14) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + subq_8.metric_time__day - MAKE_INTERVAL(days => 14) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql index 7daa131db6..8fea29e1f9 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( time_spine_src_28006.ds - MAKE_INTERVAL(days => 14) = sma_28009_cte.metric_time__day GROUP BY EXTRACT(isodow FROM time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index 40739859be..f9237f1156 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index 551f2e6416..c178103fb5 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: Postgres -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0.sql index 0b790fb63f..b2069f9459 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: Postgres --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , EXTRACT(isodow FROM time_spine_src_28005.ts) AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index 89f7ad0233..522b31ff50 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Postgres/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: Postgres -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0.sql index c04a7dbc6a..a4b6c639a3 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql index 6298887a21..96dfb165ad 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY CASE WHEN EXTRACT(dow FROM time_spine_src_28006.ds) = 0 THEN EXTRACT(dow FROM time_spine_src_28006.ds) + 7 ELSE EXTRACT(dow FROM time_spine_src_28006.ds) END - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index 5063981474..0d7829f735 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index f86d77a4c6..95d3939018 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: Redshift -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0.sql index bb2d3dc609..2028e817f0 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: Redshift --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , CASE WHEN EXTRACT(dow FROM time_spine_src_28005.ts) = 0 THEN EXTRACT(dow FROM time_spine_src_28005.ts) + 7 ELSE EXTRACT(dow FROM time_spine_src_28005.ts) END AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index 0934765833..450a1066c9 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Redshift/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: Redshift -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0.sql index f0a5fc7993..6ca9b11b8e 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATEADD(day, -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATEADD(day, -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql index 49beac3e1f..bad80d65a7 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( DATEADD(day, -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY EXTRACT(dayofweekiso FROM time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index d14893b5ac..16387f535e 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index 5068bb9906..708f4e6349 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: Snowflake -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0.sql index 5ea52552ed..45a1c88093 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: Snowflake --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , EXTRACT(dayofweekiso FROM time_spine_src_28005.ts) AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index f8a3211889..8b541c03fc 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Snowflake/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: Snowflake -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN '2020-01-01 02:00:00' AND '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0.sql index a316987243..d43de7ff8b 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0.sql @@ -4,14 +4,14 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_14.metric_time__extract_dow + subq_13.metric_time__extract_dow , bookings - bookings_2_weeks_ago AS bookings_growth_2_weeks FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) AS metric_time__extract_dow + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) AS metric_time__extract_dow , MAX(subq_4.bookings) AS bookings - , MAX(subq_13.bookings_2_weeks_ago) AS bookings_2_weeks_ago + , MAX(subq_12.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Compute Metrics via Expressions SELECT @@ -230,139 +230,139 @@ FROM ( FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_12.metric_time__extract_dow - , subq_12.bookings AS bookings_2_weeks_ago + subq_11.metric_time__extract_dow + , subq_11.bookings AS bookings_2_weeks_ago FROM ( -- Aggregate Measures SELECT - subq_11.metric_time__extract_dow - , SUM(subq_11.bookings) AS bookings + subq_10.metric_time__extract_dow + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] SELECT - subq_10.metric_time__extract_dow - , subq_10.bookings + subq_9.metric_time__extract_dow + , subq_9.bookings FROM ( -- Join to Time Spine Dataset SELECT - subq_9.metric_time__day AS metric_time__day - , subq_9.metric_time__extract_dow AS metric_time__extract_dow - , subq_6.ds__day AS ds__day - , subq_6.ds__week AS ds__week - , subq_6.ds__month AS ds__month - , subq_6.ds__quarter AS ds__quarter - , subq_6.ds__year AS ds__year - , subq_6.ds__extract_year AS ds__extract_year - , subq_6.ds__extract_quarter AS ds__extract_quarter - , subq_6.ds__extract_month AS ds__extract_month - , subq_6.ds__extract_day AS ds__extract_day - , subq_6.ds__extract_dow AS ds__extract_dow - , subq_6.ds__extract_doy AS ds__extract_doy - , subq_6.ds_partitioned__day AS ds_partitioned__day - , subq_6.ds_partitioned__week AS ds_partitioned__week - , subq_6.ds_partitioned__month AS ds_partitioned__month - , subq_6.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_6.ds_partitioned__year AS ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_6.paid_at__day AS paid_at__day - , subq_6.paid_at__week AS paid_at__week - , subq_6.paid_at__month AS paid_at__month - , subq_6.paid_at__quarter AS paid_at__quarter - , subq_6.paid_at__year AS paid_at__year - , subq_6.paid_at__extract_year AS paid_at__extract_year - , subq_6.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_6.paid_at__extract_month AS paid_at__extract_month - , subq_6.paid_at__extract_day AS paid_at__extract_day - , subq_6.paid_at__extract_dow AS paid_at__extract_dow - , subq_6.paid_at__extract_doy AS paid_at__extract_doy - , subq_6.booking__ds__day AS booking__ds__day - , subq_6.booking__ds__week AS booking__ds__week - , subq_6.booking__ds__month AS booking__ds__month - , subq_6.booking__ds__quarter AS booking__ds__quarter - , subq_6.booking__ds__year AS booking__ds__year - , subq_6.booking__ds__extract_year AS booking__ds__extract_year - , subq_6.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_6.booking__ds__extract_month AS booking__ds__extract_month - , subq_6.booking__ds__extract_day AS booking__ds__extract_day - , subq_6.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_6.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_6.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_6.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_6.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_6.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_6.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_6.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_6.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_6.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_6.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_6.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_6.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_6.booking__paid_at__day AS booking__paid_at__day - , subq_6.booking__paid_at__week AS booking__paid_at__week - , subq_6.booking__paid_at__month AS booking__paid_at__month - , subq_6.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_6.booking__paid_at__year AS booking__paid_at__year - , subq_6.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_6.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_6.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_6.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_6.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_6.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_6.metric_time__week AS metric_time__week - , subq_6.metric_time__month AS metric_time__month - , subq_6.metric_time__quarter AS metric_time__quarter - , subq_6.metric_time__year AS metric_time__year - , subq_6.metric_time__extract_year AS metric_time__extract_year - , subq_6.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_6.metric_time__extract_month AS metric_time__extract_month - , subq_6.metric_time__extract_day AS metric_time__extract_day - , subq_6.metric_time__extract_doy AS metric_time__extract_doy - , subq_6.listing AS listing - , subq_6.guest AS guest - , subq_6.host AS host - , subq_6.booking__listing AS booking__listing - , subq_6.booking__guest AS booking__guest - , subq_6.booking__host AS booking__host - , subq_6.is_instant AS is_instant - , subq_6.booking__is_instant AS booking__is_instant - , subq_6.bookings AS bookings - , subq_6.instant_bookings AS instant_bookings - , subq_6.booking_value AS booking_value - , subq_6.max_booking_value AS max_booking_value - , subq_6.min_booking_value AS min_booking_value - , subq_6.bookers AS bookers - , subq_6.average_booking_value AS average_booking_value - , subq_6.referred_bookings AS referred_bookings - , subq_6.median_booking_value AS median_booking_value - , subq_6.booking_value_p99 AS booking_value_p99 - , subq_6.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_6.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_6.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_8.metric_time__day AS metric_time__day + , subq_8.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.ds__day AS ds__day + , subq_5.ds__week AS ds__week + , subq_5.ds__month AS ds__month + , subq_5.ds__quarter AS ds__quarter + , subq_5.ds__year AS ds__year + , subq_5.ds__extract_year AS ds__extract_year + , subq_5.ds__extract_quarter AS ds__extract_quarter + , subq_5.ds__extract_month AS ds__extract_month + , subq_5.ds__extract_day AS ds__extract_day + , subq_5.ds__extract_dow AS ds__extract_dow + , subq_5.ds__extract_doy AS ds__extract_doy + , subq_5.ds_partitioned__day AS ds_partitioned__day + , subq_5.ds_partitioned__week AS ds_partitioned__week + , subq_5.ds_partitioned__month AS ds_partitioned__month + , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_5.ds_partitioned__year AS ds_partitioned__year + , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_5.paid_at__day AS paid_at__day + , subq_5.paid_at__week AS paid_at__week + , subq_5.paid_at__month AS paid_at__month + , subq_5.paid_at__quarter AS paid_at__quarter + , subq_5.paid_at__year AS paid_at__year + , subq_5.paid_at__extract_year AS paid_at__extract_year + , subq_5.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_5.paid_at__extract_month AS paid_at__extract_month + , subq_5.paid_at__extract_day AS paid_at__extract_day + , subq_5.paid_at__extract_dow AS paid_at__extract_dow + , subq_5.paid_at__extract_doy AS paid_at__extract_doy + , subq_5.booking__ds__day AS booking__ds__day + , subq_5.booking__ds__week AS booking__ds__week + , subq_5.booking__ds__month AS booking__ds__month + , subq_5.booking__ds__quarter AS booking__ds__quarter + , subq_5.booking__ds__year AS booking__ds__year + , subq_5.booking__ds__extract_year AS booking__ds__extract_year + , subq_5.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_5.booking__ds__extract_month AS booking__ds__extract_month + , subq_5.booking__ds__extract_day AS booking__ds__extract_day + , subq_5.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_5.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day AS booking__paid_at__day + , subq_5.booking__paid_at__week AS booking__paid_at__week + , subq_5.booking__paid_at__month AS booking__paid_at__month + , subq_5.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_5.booking__paid_at__year AS booking__paid_at__year + , subq_5.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.listing AS listing + , subq_5.guest AS guest + , subq_5.host AS host + , subq_5.booking__listing AS booking__listing + , subq_5.booking__guest AS booking__guest + , subq_5.booking__host AS booking__host + , subq_5.is_instant AS is_instant + , subq_5.booking__is_instant AS booking__is_instant + , subq_5.bookings AS bookings + , subq_5.instant_bookings AS instant_bookings + , subq_5.booking_value AS booking_value + , subq_5.max_booking_value AS max_booking_value + , subq_5.min_booking_value AS min_booking_value + , subq_5.bookers AS bookers + , subq_5.average_booking_value AS average_booking_value + , subq_5.referred_bookings AS referred_bookings + , subq_5.median_booking_value AS median_booking_value + , subq_5.booking_value_p99 AS booking_value_p99 + , subq_5.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Pass Only Elements: ['metric_time__day', 'metric_time__extract_dow'] SELECT - subq_8.metric_time__day - , subq_8.metric_time__extract_dow + subq_7.metric_time__day + , subq_7.metric_time__extract_dow FROM ( -- Change Column Aliases SELECT - subq_7.ds__day AS metric_time__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds__martian_day + subq_6.ds__day AS metric_time__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy + , subq_6.ds__martian_day FROM ( -- Read From Time Spine 'mf_time_spine' SELECT @@ -379,110 +379,110 @@ FROM ( , EXTRACT(doy FROM time_spine_src_28006.ds) AS ds__extract_doy , time_spine_src_28006.martian_day AS ds__martian_day FROM ***************************.mf_time_spine time_spine_src_28006 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_6 + ) subq_7 + ) subq_8 INNER JOIN ( -- Metric Time Dimension 'ds' SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.paid_at__day - , subq_5.paid_at__week - , subq_5.paid_at__month - , subq_5.paid_at__quarter - , subq_5.paid_at__year - , subq_5.paid_at__extract_year - , subq_5.paid_at__extract_quarter - , subq_5.paid_at__extract_month - , subq_5.paid_at__extract_day - , subq_5.paid_at__extract_dow - , subq_5.paid_at__extract_doy - , subq_5.booking__ds__day - , subq_5.booking__ds__week - , subq_5.booking__ds__month - , subq_5.booking__ds__quarter - , subq_5.booking__ds__year - , subq_5.booking__ds__extract_year - , subq_5.booking__ds__extract_quarter - , subq_5.booking__ds__extract_month - , subq_5.booking__ds__extract_day - , subq_5.booking__ds__extract_dow - , subq_5.booking__ds__extract_doy - , subq_5.booking__ds_partitioned__day - , subq_5.booking__ds_partitioned__week - , subq_5.booking__ds_partitioned__month - , subq_5.booking__ds_partitioned__quarter - , subq_5.booking__ds_partitioned__year - , subq_5.booking__ds_partitioned__extract_year - , subq_5.booking__ds_partitioned__extract_quarter - , subq_5.booking__ds_partitioned__extract_month - , subq_5.booking__ds_partitioned__extract_day - , subq_5.booking__ds_partitioned__extract_dow - , subq_5.booking__ds_partitioned__extract_doy - , subq_5.booking__paid_at__day - , subq_5.booking__paid_at__week - , subq_5.booking__paid_at__month - , subq_5.booking__paid_at__quarter - , subq_5.booking__paid_at__year - , subq_5.booking__paid_at__extract_year - , subq_5.booking__paid_at__extract_quarter - , subq_5.booking__paid_at__extract_month - , subq_5.booking__paid_at__extract_day - , subq_5.booking__paid_at__extract_dow - , subq_5.booking__paid_at__extract_doy - , subq_5.ds__day AS metric_time__day - , subq_5.ds__week AS metric_time__week - , subq_5.ds__month AS metric_time__month - , subq_5.ds__quarter AS metric_time__quarter - , subq_5.ds__year AS metric_time__year - , subq_5.ds__extract_year AS metric_time__extract_year - , subq_5.ds__extract_quarter AS metric_time__extract_quarter - , subq_5.ds__extract_month AS metric_time__extract_month - , subq_5.ds__extract_day AS metric_time__extract_day - , subq_5.ds__extract_dow AS metric_time__extract_dow - , subq_5.ds__extract_doy AS metric_time__extract_doy - , subq_5.listing - , subq_5.guest - , subq_5.host - , subq_5.booking__listing - , subq_5.booking__guest - , subq_5.booking__host - , subq_5.is_instant - , subq_5.booking__is_instant - , subq_5.bookings - , subq_5.instant_bookings - , subq_5.booking_value - , subq_5.max_booking_value - , subq_5.min_booking_value - , subq_5.bookers - , subq_5.average_booking_value - , subq_5.referred_bookings - , subq_5.median_booking_value - , subq_5.booking_value_p99 - , subq_5.discrete_booking_value_p99 - , subq_5.approximate_continuous_booking_value_p99 - , subq_5.approximate_discrete_booking_value_p99 + subq_0.ds__day + , subq_0.ds__week + , subq_0.ds__month + , subq_0.ds__quarter + , subq_0.ds__year + , subq_0.ds__extract_year + , subq_0.ds__extract_quarter + , subq_0.ds__extract_month + , subq_0.ds__extract_day + , subq_0.ds__extract_dow + , subq_0.ds__extract_doy + , subq_0.ds_partitioned__day + , subq_0.ds_partitioned__week + , subq_0.ds_partitioned__month + , subq_0.ds_partitioned__quarter + , subq_0.ds_partitioned__year + , subq_0.ds_partitioned__extract_year + , subq_0.ds_partitioned__extract_quarter + , subq_0.ds_partitioned__extract_month + , subq_0.ds_partitioned__extract_day + , subq_0.ds_partitioned__extract_dow + , subq_0.ds_partitioned__extract_doy + , subq_0.paid_at__day + , subq_0.paid_at__week + , subq_0.paid_at__month + , subq_0.paid_at__quarter + , subq_0.paid_at__year + , subq_0.paid_at__extract_year + , subq_0.paid_at__extract_quarter + , subq_0.paid_at__extract_month + , subq_0.paid_at__extract_day + , subq_0.paid_at__extract_dow + , subq_0.paid_at__extract_doy + , subq_0.booking__ds__day + , subq_0.booking__ds__week + , subq_0.booking__ds__month + , subq_0.booking__ds__quarter + , subq_0.booking__ds__year + , subq_0.booking__ds__extract_year + , subq_0.booking__ds__extract_quarter + , subq_0.booking__ds__extract_month + , subq_0.booking__ds__extract_day + , subq_0.booking__ds__extract_dow + , subq_0.booking__ds__extract_doy + , subq_0.booking__ds_partitioned__day + , subq_0.booking__ds_partitioned__week + , subq_0.booking__ds_partitioned__month + , subq_0.booking__ds_partitioned__quarter + , subq_0.booking__ds_partitioned__year + , subq_0.booking__ds_partitioned__extract_year + , subq_0.booking__ds_partitioned__extract_quarter + , subq_0.booking__ds_partitioned__extract_month + , subq_0.booking__ds_partitioned__extract_day + , subq_0.booking__ds_partitioned__extract_dow + , subq_0.booking__ds_partitioned__extract_doy + , subq_0.booking__paid_at__day + , subq_0.booking__paid_at__week + , subq_0.booking__paid_at__month + , subq_0.booking__paid_at__quarter + , subq_0.booking__paid_at__year + , subq_0.booking__paid_at__extract_year + , subq_0.booking__paid_at__extract_quarter + , subq_0.booking__paid_at__extract_month + , subq_0.booking__paid_at__extract_day + , subq_0.booking__paid_at__extract_dow + , subq_0.booking__paid_at__extract_doy + , subq_0.ds__day AS metric_time__day + , subq_0.ds__week AS metric_time__week + , subq_0.ds__month AS metric_time__month + , subq_0.ds__quarter AS metric_time__quarter + , subq_0.ds__year AS metric_time__year + , subq_0.ds__extract_year AS metric_time__extract_year + , subq_0.ds__extract_quarter AS metric_time__extract_quarter + , subq_0.ds__extract_month AS metric_time__extract_month + , subq_0.ds__extract_day AS metric_time__extract_day + , subq_0.ds__extract_dow AS metric_time__extract_dow + , subq_0.ds__extract_doy AS metric_time__extract_doy + , subq_0.listing + , subq_0.guest + , subq_0.host + , subq_0.booking__listing + , subq_0.booking__guest + , subq_0.booking__host + , subq_0.is_instant + , subq_0.booking__is_instant + , subq_0.bookings + , subq_0.instant_bookings + , subq_0.booking_value + , subq_0.max_booking_value + , subq_0.min_booking_value + , subq_0.bookers + , subq_0.average_booking_value + , subq_0.referred_bookings + , subq_0.median_booking_value + , subq_0.booking_value_p99 + , subq_0.discrete_booking_value_p99 + , subq_0.approximate_continuous_booking_value_p99 + , subq_0.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -575,18 +575,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_5 - ) subq_6 + ) subq_0 + ) subq_5 ON - DATE_ADD('day', -14, subq_9.metric_time__day) = subq_6.metric_time__day - ) subq_10 - ) subq_11 + DATE_ADD('day', -14, subq_8.metric_time__day) = subq_5.metric_time__day + ) subq_9 + ) subq_10 GROUP BY - subq_11.metric_time__extract_dow - ) subq_12 - ) subq_13 + subq_10.metric_time__extract_dow + ) subq_11 + ) subq_12 ON - subq_4.metric_time__extract_dow = subq_13.metric_time__extract_dow + subq_4.metric_time__extract_dow = subq_12.metric_time__extract_dow GROUP BY - COALESCE(subq_4.metric_time__extract_dow, subq_13.metric_time__extract_dow) -) subq_14 + COALESCE(subq_4.metric_time__extract_dow, subq_12.metric_time__extract_dow) +) subq_13 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql index fc0bf13292..ced81f713e 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_offset_window_with_date_part__plan0_optimized.sql @@ -19,9 +19,9 @@ SELECT FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) AS metric_time__extract_dow - , MAX(subq_19.bookings) AS bookings - , MAX(subq_27.bookings_2_weeks_ago) AS bookings_2_weeks_ago + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) AS metric_time__extract_dow + , MAX(subq_18.bookings) AS bookings + , MAX(subq_26.bookings_2_weeks_ago) AS bookings_2_weeks_ago FROM ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -33,7 +33,7 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY metric_time__extract_dow - ) subq_19 + ) subq_18 FULL OUTER JOIN ( -- Join to Time Spine Dataset -- Pass Only Elements: ['bookings', 'metric_time__extract_dow'] @@ -49,9 +49,9 @@ FROM ( DATE_ADD('day', -14, time_spine_src_28006.ds) = sma_28009_cte.metric_time__day GROUP BY EXTRACT(DAY_OF_WEEK FROM time_spine_src_28006.ds) - ) subq_27 + ) subq_26 ON - subq_19.metric_time__extract_dow = subq_27.metric_time__extract_dow + subq_18.metric_time__extract_dow = subq_26.metric_time__extract_dow GROUP BY - COALESCE(subq_19.metric_time__extract_dow, subq_27.metric_time__extract_dow) -) subq_28 + COALESCE(subq_18.metric_time__extract_dow, subq_26.metric_time__extract_dow) +) subq_27 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql index 9349db9655..629792cfec 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0.sql @@ -4,222 +4,222 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_11.listing__user__bio_added_ts__minute - , subq_11.bookings + subq_23.listing__user__bio_added_ts__minute + , subq_23.bookings FROM ( -- Aggregate Measures SELECT - subq_10.listing__user__bio_added_ts__minute - , SUM(subq_10.bookings) AS bookings + subq_22.listing__user__bio_added_ts__minute + , SUM(subq_22.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing__user__bio_added_ts__minute'] SELECT - subq_9.listing__user__bio_added_ts__minute - , subq_9.bookings + subq_21.listing__user__bio_added_ts__minute + , subq_21.bookings FROM ( -- Join Standard Outputs SELECT - subq_8.user__ds_partitioned__day AS listing__user__ds_partitioned__day - , subq_8.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_20.user__ds_partitioned__day AS listing__user__ds_partitioned__day + , subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.ds_partitioned__day AS ds_partitioned__day + , subq_13.ds_partitioned__week AS ds_partitioned__week + , subq_13.ds_partitioned__month AS ds_partitioned__month + , subq_13.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_13.ds_partitioned__year AS ds_partitioned__year + , subq_13.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_13.paid_at__day AS paid_at__day + , subq_13.paid_at__week AS paid_at__week + , subq_13.paid_at__month AS paid_at__month + , subq_13.paid_at__quarter AS paid_at__quarter + , subq_13.paid_at__year AS paid_at__year + , subq_13.paid_at__extract_year AS paid_at__extract_year + , subq_13.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_13.paid_at__extract_month AS paid_at__extract_month + , subq_13.paid_at__extract_day AS paid_at__extract_day + , subq_13.paid_at__extract_dow AS paid_at__extract_dow + , subq_13.paid_at__extract_doy AS paid_at__extract_doy + , subq_13.booking__ds__day AS booking__ds__day + , subq_13.booking__ds__week AS booking__ds__week + , subq_13.booking__ds__month AS booking__ds__month + , subq_13.booking__ds__quarter AS booking__ds__quarter + , subq_13.booking__ds__year AS booking__ds__year + , subq_13.booking__ds__extract_year AS booking__ds__extract_year + , subq_13.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_13.booking__ds__extract_month AS booking__ds__extract_month + , subq_13.booking__ds__extract_day AS booking__ds__extract_day + , subq_13.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_13.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_13.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_13.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_13.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_13.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_13.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_13.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_13.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_13.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_13.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_13.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_13.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_13.booking__paid_at__day AS booking__paid_at__day + , subq_13.booking__paid_at__week AS booking__paid_at__week + , subq_13.booking__paid_at__month AS booking__paid_at__month + , subq_13.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_13.booking__paid_at__year AS booking__paid_at__year + , subq_13.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_13.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_13.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_13.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_13.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_13.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.guest AS guest + , subq_13.host AS host + , subq_13.booking__listing AS booking__listing + , subq_13.booking__guest AS booking__guest + , subq_13.booking__host AS booking__host + , subq_13.is_instant AS is_instant + , subq_13.booking__is_instant AS booking__is_instant + , subq_13.bookings AS bookings + , subq_13.instant_bookings AS instant_bookings + , subq_13.booking_value AS booking_value + , subq_13.max_booking_value AS max_booking_value + , subq_13.min_booking_value AS min_booking_value + , subq_13.bookers AS bookers + , subq_13.average_booking_value AS average_booking_value + , subq_13.referred_bookings AS referred_bookings + , subq_13.median_booking_value AS median_booking_value + , subq_13.booking_value_p99 AS booking_value_p99 + , subq_13.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_13.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_13.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.ds_partitioned__day + , subq_12.ds_partitioned__week + , subq_12.ds_partitioned__month + , subq_12.ds_partitioned__quarter + , subq_12.ds_partitioned__year + , subq_12.ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy + , subq_12.paid_at__day + , subq_12.paid_at__week + , subq_12.paid_at__month + , subq_12.paid_at__quarter + , subq_12.paid_at__year + , subq_12.paid_at__extract_year + , subq_12.paid_at__extract_quarter + , subq_12.paid_at__extract_month + , subq_12.paid_at__extract_day + , subq_12.paid_at__extract_dow + , subq_12.paid_at__extract_doy + , subq_12.booking__ds__day + , subq_12.booking__ds__week + , subq_12.booking__ds__month + , subq_12.booking__ds__quarter + , subq_12.booking__ds__year + , subq_12.booking__ds__extract_year + , subq_12.booking__ds__extract_quarter + , subq_12.booking__ds__extract_month + , subq_12.booking__ds__extract_day + , subq_12.booking__ds__extract_dow + , subq_12.booking__ds__extract_doy + , subq_12.booking__ds_partitioned__day + , subq_12.booking__ds_partitioned__week + , subq_12.booking__ds_partitioned__month + , subq_12.booking__ds_partitioned__quarter + , subq_12.booking__ds_partitioned__year + , subq_12.booking__ds_partitioned__extract_year + , subq_12.booking__ds_partitioned__extract_quarter + , subq_12.booking__ds_partitioned__extract_month + , subq_12.booking__ds_partitioned__extract_day + , subq_12.booking__ds_partitioned__extract_dow + , subq_12.booking__ds_partitioned__extract_doy + , subq_12.booking__paid_at__day + , subq_12.booking__paid_at__week + , subq_12.booking__paid_at__month + , subq_12.booking__paid_at__quarter + , subq_12.booking__paid_at__year + , subq_12.booking__paid_at__extract_year + , subq_12.booking__paid_at__extract_quarter + , subq_12.booking__paid_at__extract_month + , subq_12.booking__paid_at__extract_day + , subq_12.booking__paid_at__extract_dow + , subq_12.booking__paid_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.guest + , subq_12.host + , subq_12.booking__listing + , subq_12.booking__guest + , subq_12.booking__host + , subq_12.is_instant + , subq_12.booking__is_instant + , subq_12.bookings + , subq_12.instant_bookings + , subq_12.booking_value + , subq_12.max_booking_value + , subq_12.min_booking_value + , subq_12.bookers + , subq_12.average_booking_value + , subq_12.referred_bookings + , subq_12.median_booking_value + , subq_12.booking_value_p99 + , subq_12.discrete_booking_value_p99 + , subq_12.approximate_continuous_booking_value_p99 + , subq_12.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -312,253 +312,253 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] SELECT - subq_7.user__ds_partitioned__day - , subq_7.user__bio_added_ts__minute - , subq_7.listing + subq_19.user__ds_partitioned__day + , subq_19.user__bio_added_ts__minute + , subq_19.listing FROM ( -- Join Standard Outputs SELECT - subq_6.home_state AS user__home_state - , subq_6.ds__day AS user__ds__day - , subq_6.ds__week AS user__ds__week - , subq_6.ds__month AS user__ds__month - , subq_6.ds__quarter AS user__ds__quarter - , subq_6.ds__year AS user__ds__year - , subq_6.ds__extract_year AS user__ds__extract_year - , subq_6.ds__extract_quarter AS user__ds__extract_quarter - , subq_6.ds__extract_month AS user__ds__extract_month - , subq_6.ds__extract_day AS user__ds__extract_day - , subq_6.ds__extract_dow AS user__ds__extract_dow - , subq_6.ds__extract_doy AS user__ds__extract_doy - , subq_6.created_at__day AS user__created_at__day - , subq_6.created_at__week AS user__created_at__week - , subq_6.created_at__month AS user__created_at__month - , subq_6.created_at__quarter AS user__created_at__quarter - , subq_6.created_at__year AS user__created_at__year - , subq_6.created_at__extract_year AS user__created_at__extract_year - , subq_6.created_at__extract_quarter AS user__created_at__extract_quarter - , subq_6.created_at__extract_month AS user__created_at__extract_month - , subq_6.created_at__extract_day AS user__created_at__extract_day - , subq_6.created_at__extract_dow AS user__created_at__extract_dow - , subq_6.created_at__extract_doy AS user__created_at__extract_doy - , subq_6.ds_partitioned__day AS user__ds_partitioned__day - , subq_6.ds_partitioned__week AS user__ds_partitioned__week - , subq_6.ds_partitioned__month AS user__ds_partitioned__month - , subq_6.ds_partitioned__quarter AS user__ds_partitioned__quarter - , subq_6.ds_partitioned__year AS user__ds_partitioned__year - , subq_6.ds_partitioned__extract_year AS user__ds_partitioned__extract_year - , subq_6.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter - , subq_6.ds_partitioned__extract_month AS user__ds_partitioned__extract_month - , subq_6.ds_partitioned__extract_day AS user__ds_partitioned__extract_day - , subq_6.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow - , subq_6.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy - , subq_6.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond - , subq_6.last_profile_edit_ts__second AS user__last_profile_edit_ts__second - , subq_6.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute - , subq_6.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour - , subq_6.last_profile_edit_ts__day AS user__last_profile_edit_ts__day - , subq_6.last_profile_edit_ts__week AS user__last_profile_edit_ts__week - , subq_6.last_profile_edit_ts__month AS user__last_profile_edit_ts__month - , subq_6.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter - , subq_6.last_profile_edit_ts__year AS user__last_profile_edit_ts__year - , subq_6.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year - , subq_6.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter - , subq_6.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month - , subq_6.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day - , subq_6.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow - , subq_6.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy - , subq_6.bio_added_ts__second AS user__bio_added_ts__second - , subq_6.bio_added_ts__minute AS user__bio_added_ts__minute - , subq_6.bio_added_ts__hour AS user__bio_added_ts__hour - , subq_6.bio_added_ts__day AS user__bio_added_ts__day - , subq_6.bio_added_ts__week AS user__bio_added_ts__week - , subq_6.bio_added_ts__month AS user__bio_added_ts__month - , subq_6.bio_added_ts__quarter AS user__bio_added_ts__quarter - , subq_6.bio_added_ts__year AS user__bio_added_ts__year - , subq_6.bio_added_ts__extract_year AS user__bio_added_ts__extract_year - , subq_6.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter - , subq_6.bio_added_ts__extract_month AS user__bio_added_ts__extract_month - , subq_6.bio_added_ts__extract_day AS user__bio_added_ts__extract_day - , subq_6.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow - , subq_6.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy - , subq_6.last_login_ts__minute AS user__last_login_ts__minute - , subq_6.last_login_ts__hour AS user__last_login_ts__hour - , subq_6.last_login_ts__day AS user__last_login_ts__day - , subq_6.last_login_ts__week AS user__last_login_ts__week - , subq_6.last_login_ts__month AS user__last_login_ts__month - , subq_6.last_login_ts__quarter AS user__last_login_ts__quarter - , subq_6.last_login_ts__year AS user__last_login_ts__year - , subq_6.last_login_ts__extract_year AS user__last_login_ts__extract_year - , subq_6.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter - , subq_6.last_login_ts__extract_month AS user__last_login_ts__extract_month - , subq_6.last_login_ts__extract_day AS user__last_login_ts__extract_day - , subq_6.last_login_ts__extract_dow AS user__last_login_ts__extract_dow - , subq_6.last_login_ts__extract_doy AS user__last_login_ts__extract_doy - , subq_6.archived_at__hour AS user__archived_at__hour - , subq_6.archived_at__day AS user__archived_at__day - , subq_6.archived_at__week AS user__archived_at__week - , subq_6.archived_at__month AS user__archived_at__month - , subq_6.archived_at__quarter AS user__archived_at__quarter - , subq_6.archived_at__year AS user__archived_at__year - , subq_6.archived_at__extract_year AS user__archived_at__extract_year - , subq_6.archived_at__extract_quarter AS user__archived_at__extract_quarter - , subq_6.archived_at__extract_month AS user__archived_at__extract_month - , subq_6.archived_at__extract_day AS user__archived_at__extract_day - , subq_6.archived_at__extract_dow AS user__archived_at__extract_dow - , subq_6.archived_at__extract_doy AS user__archived_at__extract_doy - , subq_6.metric_time__day AS user__metric_time__day - , subq_6.metric_time__week AS user__metric_time__week - , subq_6.metric_time__month AS user__metric_time__month - , subq_6.metric_time__quarter AS user__metric_time__quarter - , subq_6.metric_time__year AS user__metric_time__year - , subq_6.metric_time__extract_year AS user__metric_time__extract_year - , subq_6.metric_time__extract_quarter AS user__metric_time__extract_quarter - , subq_6.metric_time__extract_month AS user__metric_time__extract_month - , subq_6.metric_time__extract_day AS user__metric_time__extract_day - , subq_6.metric_time__extract_dow AS user__metric_time__extract_dow - , subq_6.metric_time__extract_doy AS user__metric_time__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.created_at__day AS created_at__day - , subq_3.created_at__week AS created_at__week - , subq_3.created_at__month AS created_at__month - , subq_3.created_at__quarter AS created_at__quarter - , subq_3.created_at__year AS created_at__year - , subq_3.created_at__extract_year AS created_at__extract_year - , subq_3.created_at__extract_quarter AS created_at__extract_quarter - , subq_3.created_at__extract_month AS created_at__extract_month - , subq_3.created_at__extract_day AS created_at__extract_day - , subq_3.created_at__extract_dow AS created_at__extract_dow - , subq_3.created_at__extract_doy AS created_at__extract_doy - , subq_3.listing__ds__day AS listing__ds__day - , subq_3.listing__ds__week AS listing__ds__week - , subq_3.listing__ds__month AS listing__ds__month - , subq_3.listing__ds__quarter AS listing__ds__quarter - , subq_3.listing__ds__year AS listing__ds__year - , subq_3.listing__ds__extract_year AS listing__ds__extract_year - , subq_3.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_3.listing__ds__extract_month AS listing__ds__extract_month - , subq_3.listing__ds__extract_day AS listing__ds__extract_day - , subq_3.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_3.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_3.listing__created_at__day AS listing__created_at__day - , subq_3.listing__created_at__week AS listing__created_at__week - , subq_3.listing__created_at__month AS listing__created_at__month - , subq_3.listing__created_at__quarter AS listing__created_at__quarter - , subq_3.listing__created_at__year AS listing__created_at__year - , subq_3.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_3.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_3.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_3.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_3.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_3.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.user AS user - , subq_3.listing__user AS listing__user - , subq_3.country_latest AS country_latest - , subq_3.is_lux_latest AS is_lux_latest - , subq_3.capacity_latest AS capacity_latest - , subq_3.listing__country_latest AS listing__country_latest - , subq_3.listing__is_lux_latest AS listing__is_lux_latest - , subq_3.listing__capacity_latest AS listing__capacity_latest - , subq_3.listings AS listings - , subq_3.largest_listing AS largest_listing - , subq_3.smallest_listing AS smallest_listing + subq_18.home_state AS user__home_state + , subq_18.ds__day AS user__ds__day + , subq_18.ds__week AS user__ds__week + , subq_18.ds__month AS user__ds__month + , subq_18.ds__quarter AS user__ds__quarter + , subq_18.ds__year AS user__ds__year + , subq_18.ds__extract_year AS user__ds__extract_year + , subq_18.ds__extract_quarter AS user__ds__extract_quarter + , subq_18.ds__extract_month AS user__ds__extract_month + , subq_18.ds__extract_day AS user__ds__extract_day + , subq_18.ds__extract_dow AS user__ds__extract_dow + , subq_18.ds__extract_doy AS user__ds__extract_doy + , subq_18.created_at__day AS user__created_at__day + , subq_18.created_at__week AS user__created_at__week + , subq_18.created_at__month AS user__created_at__month + , subq_18.created_at__quarter AS user__created_at__quarter + , subq_18.created_at__year AS user__created_at__year + , subq_18.created_at__extract_year AS user__created_at__extract_year + , subq_18.created_at__extract_quarter AS user__created_at__extract_quarter + , subq_18.created_at__extract_month AS user__created_at__extract_month + , subq_18.created_at__extract_day AS user__created_at__extract_day + , subq_18.created_at__extract_dow AS user__created_at__extract_dow + , subq_18.created_at__extract_doy AS user__created_at__extract_doy + , subq_18.ds_partitioned__day AS user__ds_partitioned__day + , subq_18.ds_partitioned__week AS user__ds_partitioned__week + , subq_18.ds_partitioned__month AS user__ds_partitioned__month + , subq_18.ds_partitioned__quarter AS user__ds_partitioned__quarter + , subq_18.ds_partitioned__year AS user__ds_partitioned__year + , subq_18.ds_partitioned__extract_year AS user__ds_partitioned__extract_year + , subq_18.ds_partitioned__extract_quarter AS user__ds_partitioned__extract_quarter + , subq_18.ds_partitioned__extract_month AS user__ds_partitioned__extract_month + , subq_18.ds_partitioned__extract_day AS user__ds_partitioned__extract_day + , subq_18.ds_partitioned__extract_dow AS user__ds_partitioned__extract_dow + , subq_18.ds_partitioned__extract_doy AS user__ds_partitioned__extract_doy + , subq_18.last_profile_edit_ts__millisecond AS user__last_profile_edit_ts__millisecond + , subq_18.last_profile_edit_ts__second AS user__last_profile_edit_ts__second + , subq_18.last_profile_edit_ts__minute AS user__last_profile_edit_ts__minute + , subq_18.last_profile_edit_ts__hour AS user__last_profile_edit_ts__hour + , subq_18.last_profile_edit_ts__day AS user__last_profile_edit_ts__day + , subq_18.last_profile_edit_ts__week AS user__last_profile_edit_ts__week + , subq_18.last_profile_edit_ts__month AS user__last_profile_edit_ts__month + , subq_18.last_profile_edit_ts__quarter AS user__last_profile_edit_ts__quarter + , subq_18.last_profile_edit_ts__year AS user__last_profile_edit_ts__year + , subq_18.last_profile_edit_ts__extract_year AS user__last_profile_edit_ts__extract_year + , subq_18.last_profile_edit_ts__extract_quarter AS user__last_profile_edit_ts__extract_quarter + , subq_18.last_profile_edit_ts__extract_month AS user__last_profile_edit_ts__extract_month + , subq_18.last_profile_edit_ts__extract_day AS user__last_profile_edit_ts__extract_day + , subq_18.last_profile_edit_ts__extract_dow AS user__last_profile_edit_ts__extract_dow + , subq_18.last_profile_edit_ts__extract_doy AS user__last_profile_edit_ts__extract_doy + , subq_18.bio_added_ts__second AS user__bio_added_ts__second + , subq_18.bio_added_ts__minute AS user__bio_added_ts__minute + , subq_18.bio_added_ts__hour AS user__bio_added_ts__hour + , subq_18.bio_added_ts__day AS user__bio_added_ts__day + , subq_18.bio_added_ts__week AS user__bio_added_ts__week + , subq_18.bio_added_ts__month AS user__bio_added_ts__month + , subq_18.bio_added_ts__quarter AS user__bio_added_ts__quarter + , subq_18.bio_added_ts__year AS user__bio_added_ts__year + , subq_18.bio_added_ts__extract_year AS user__bio_added_ts__extract_year + , subq_18.bio_added_ts__extract_quarter AS user__bio_added_ts__extract_quarter + , subq_18.bio_added_ts__extract_month AS user__bio_added_ts__extract_month + , subq_18.bio_added_ts__extract_day AS user__bio_added_ts__extract_day + , subq_18.bio_added_ts__extract_dow AS user__bio_added_ts__extract_dow + , subq_18.bio_added_ts__extract_doy AS user__bio_added_ts__extract_doy + , subq_18.last_login_ts__minute AS user__last_login_ts__minute + , subq_18.last_login_ts__hour AS user__last_login_ts__hour + , subq_18.last_login_ts__day AS user__last_login_ts__day + , subq_18.last_login_ts__week AS user__last_login_ts__week + , subq_18.last_login_ts__month AS user__last_login_ts__month + , subq_18.last_login_ts__quarter AS user__last_login_ts__quarter + , subq_18.last_login_ts__year AS user__last_login_ts__year + , subq_18.last_login_ts__extract_year AS user__last_login_ts__extract_year + , subq_18.last_login_ts__extract_quarter AS user__last_login_ts__extract_quarter + , subq_18.last_login_ts__extract_month AS user__last_login_ts__extract_month + , subq_18.last_login_ts__extract_day AS user__last_login_ts__extract_day + , subq_18.last_login_ts__extract_dow AS user__last_login_ts__extract_dow + , subq_18.last_login_ts__extract_doy AS user__last_login_ts__extract_doy + , subq_18.archived_at__hour AS user__archived_at__hour + , subq_18.archived_at__day AS user__archived_at__day + , subq_18.archived_at__week AS user__archived_at__week + , subq_18.archived_at__month AS user__archived_at__month + , subq_18.archived_at__quarter AS user__archived_at__quarter + , subq_18.archived_at__year AS user__archived_at__year + , subq_18.archived_at__extract_year AS user__archived_at__extract_year + , subq_18.archived_at__extract_quarter AS user__archived_at__extract_quarter + , subq_18.archived_at__extract_month AS user__archived_at__extract_month + , subq_18.archived_at__extract_day AS user__archived_at__extract_day + , subq_18.archived_at__extract_dow AS user__archived_at__extract_dow + , subq_18.archived_at__extract_doy AS user__archived_at__extract_doy + , subq_18.metric_time__day AS user__metric_time__day + , subq_18.metric_time__week AS user__metric_time__week + , subq_18.metric_time__month AS user__metric_time__month + , subq_18.metric_time__quarter AS user__metric_time__quarter + , subq_18.metric_time__year AS user__metric_time__year + , subq_18.metric_time__extract_year AS user__metric_time__extract_year + , subq_18.metric_time__extract_quarter AS user__metric_time__extract_quarter + , subq_18.metric_time__extract_month AS user__metric_time__extract_month + , subq_18.metric_time__extract_day AS user__metric_time__extract_day + , subq_18.metric_time__extract_dow AS user__metric_time__extract_dow + , subq_18.metric_time__extract_doy AS user__metric_time__extract_doy + , subq_15.ds__day AS ds__day + , subq_15.ds__week AS ds__week + , subq_15.ds__month AS ds__month + , subq_15.ds__quarter AS ds__quarter + , subq_15.ds__year AS ds__year + , subq_15.ds__extract_year AS ds__extract_year + , subq_15.ds__extract_quarter AS ds__extract_quarter + , subq_15.ds__extract_month AS ds__extract_month + , subq_15.ds__extract_day AS ds__extract_day + , subq_15.ds__extract_dow AS ds__extract_dow + , subq_15.ds__extract_doy AS ds__extract_doy + , subq_15.created_at__day AS created_at__day + , subq_15.created_at__week AS created_at__week + , subq_15.created_at__month AS created_at__month + , subq_15.created_at__quarter AS created_at__quarter + , subq_15.created_at__year AS created_at__year + , subq_15.created_at__extract_year AS created_at__extract_year + , subq_15.created_at__extract_quarter AS created_at__extract_quarter + , subq_15.created_at__extract_month AS created_at__extract_month + , subq_15.created_at__extract_day AS created_at__extract_day + , subq_15.created_at__extract_dow AS created_at__extract_dow + , subq_15.created_at__extract_doy AS created_at__extract_doy + , subq_15.listing__ds__day AS listing__ds__day + , subq_15.listing__ds__week AS listing__ds__week + , subq_15.listing__ds__month AS listing__ds__month + , subq_15.listing__ds__quarter AS listing__ds__quarter + , subq_15.listing__ds__year AS listing__ds__year + , subq_15.listing__ds__extract_year AS listing__ds__extract_year + , subq_15.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_15.listing__ds__extract_month AS listing__ds__extract_month + , subq_15.listing__ds__extract_day AS listing__ds__extract_day + , subq_15.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_15.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_15.listing__created_at__day AS listing__created_at__day + , subq_15.listing__created_at__week AS listing__created_at__week + , subq_15.listing__created_at__month AS listing__created_at__month + , subq_15.listing__created_at__quarter AS listing__created_at__quarter + , subq_15.listing__created_at__year AS listing__created_at__year + , subq_15.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_15.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_15.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_15.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_15.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_15.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_15.metric_time__day AS metric_time__day + , subq_15.metric_time__week AS metric_time__week + , subq_15.metric_time__month AS metric_time__month + , subq_15.metric_time__quarter AS metric_time__quarter + , subq_15.metric_time__year AS metric_time__year + , subq_15.metric_time__extract_year AS metric_time__extract_year + , subq_15.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_15.metric_time__extract_month AS metric_time__extract_month + , subq_15.metric_time__extract_day AS metric_time__extract_day + , subq_15.metric_time__extract_dow AS metric_time__extract_dow + , subq_15.metric_time__extract_doy AS metric_time__extract_doy + , subq_15.listing AS listing + , subq_15.user AS user + , subq_15.listing__user AS listing__user + , subq_15.country_latest AS country_latest + , subq_15.is_lux_latest AS is_lux_latest + , subq_15.capacity_latest AS capacity_latest + , subq_15.listing__country_latest AS listing__country_latest + , subq_15.listing__is_lux_latest AS listing__is_lux_latest + , subq_15.listing__capacity_latest AS listing__capacity_latest + , subq_15.listings AS listings + , subq_15.largest_listing AS largest_listing + , subq_15.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.created_at__day - , subq_2.created_at__week - , subq_2.created_at__month - , subq_2.created_at__quarter - , subq_2.created_at__year - , subq_2.created_at__extract_year - , subq_2.created_at__extract_quarter - , subq_2.created_at__extract_month - , subq_2.created_at__extract_day - , subq_2.created_at__extract_dow - , subq_2.created_at__extract_doy - , subq_2.listing__ds__day - , subq_2.listing__ds__week - , subq_2.listing__ds__month - , subq_2.listing__ds__quarter - , subq_2.listing__ds__year - , subq_2.listing__ds__extract_year - , subq_2.listing__ds__extract_quarter - , subq_2.listing__ds__extract_month - , subq_2.listing__ds__extract_day - , subq_2.listing__ds__extract_dow - , subq_2.listing__ds__extract_doy - , subq_2.listing__created_at__day - , subq_2.listing__created_at__week - , subq_2.listing__created_at__month - , subq_2.listing__created_at__quarter - , subq_2.listing__created_at__year - , subq_2.listing__created_at__extract_year - , subq_2.listing__created_at__extract_quarter - , subq_2.listing__created_at__extract_month - , subq_2.listing__created_at__extract_day - , subq_2.listing__created_at__extract_dow - , subq_2.listing__created_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.user - , subq_2.listing__user - , subq_2.country_latest - , subq_2.is_lux_latest - , subq_2.capacity_latest - , subq_2.listing__country_latest - , subq_2.listing__is_lux_latest - , subq_2.listing__capacity_latest - , subq_2.listings - , subq_2.largest_listing - , subq_2.smallest_listing + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.created_at__day + , subq_14.created_at__week + , subq_14.created_at__month + , subq_14.created_at__quarter + , subq_14.created_at__year + , subq_14.created_at__extract_year + , subq_14.created_at__extract_quarter + , subq_14.created_at__extract_month + , subq_14.created_at__extract_day + , subq_14.created_at__extract_dow + , subq_14.created_at__extract_doy + , subq_14.listing__ds__day + , subq_14.listing__ds__week + , subq_14.listing__ds__month + , subq_14.listing__ds__quarter + , subq_14.listing__ds__year + , subq_14.listing__ds__extract_year + , subq_14.listing__ds__extract_quarter + , subq_14.listing__ds__extract_month + , subq_14.listing__ds__extract_day + , subq_14.listing__ds__extract_dow + , subq_14.listing__ds__extract_doy + , subq_14.listing__created_at__day + , subq_14.listing__created_at__week + , subq_14.listing__created_at__month + , subq_14.listing__created_at__quarter + , subq_14.listing__created_at__year + , subq_14.listing__created_at__extract_year + , subq_14.listing__created_at__extract_quarter + , subq_14.listing__created_at__extract_month + , subq_14.listing__created_at__extract_day + , subq_14.listing__created_at__extract_dow + , subq_14.listing__created_at__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.listing + , subq_14.user + , subq_14.listing__user + , subq_14.country_latest + , subq_14.is_lux_latest + , subq_14.capacity_latest + , subq_14.listing__country_latest + , subq_14.listing__is_lux_latest + , subq_14.listing__capacity_latest + , subq_14.listings + , subq_14.largest_listing + , subq_14.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -619,8 +619,8 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_2 - ) subq_3 + ) subq_14 + ) subq_15 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'home_state', @@ -813,386 +813,386 @@ FROM ( -- 'user', -- ] SELECT - subq_5.ds__day - , subq_5.ds__week - , subq_5.ds__month - , subq_5.ds__quarter - , subq_5.ds__year - , subq_5.ds__extract_year - , subq_5.ds__extract_quarter - , subq_5.ds__extract_month - , subq_5.ds__extract_day - , subq_5.ds__extract_dow - , subq_5.ds__extract_doy - , subq_5.created_at__day - , subq_5.created_at__week - , subq_5.created_at__month - , subq_5.created_at__quarter - , subq_5.created_at__year - , subq_5.created_at__extract_year - , subq_5.created_at__extract_quarter - , subq_5.created_at__extract_month - , subq_5.created_at__extract_day - , subq_5.created_at__extract_dow - , subq_5.created_at__extract_doy - , subq_5.ds_partitioned__day - , subq_5.ds_partitioned__week - , subq_5.ds_partitioned__month - , subq_5.ds_partitioned__quarter - , subq_5.ds_partitioned__year - , subq_5.ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy - , subq_5.last_profile_edit_ts__millisecond - , subq_5.last_profile_edit_ts__second - , subq_5.last_profile_edit_ts__minute - , subq_5.last_profile_edit_ts__hour - , subq_5.last_profile_edit_ts__day - , subq_5.last_profile_edit_ts__week - , subq_5.last_profile_edit_ts__month - , subq_5.last_profile_edit_ts__quarter - , subq_5.last_profile_edit_ts__year - , subq_5.last_profile_edit_ts__extract_year - , subq_5.last_profile_edit_ts__extract_quarter - , subq_5.last_profile_edit_ts__extract_month - , subq_5.last_profile_edit_ts__extract_day - , subq_5.last_profile_edit_ts__extract_dow - , subq_5.last_profile_edit_ts__extract_doy - , subq_5.bio_added_ts__second - , subq_5.bio_added_ts__minute - , subq_5.bio_added_ts__hour - , subq_5.bio_added_ts__day - , subq_5.bio_added_ts__week - , subq_5.bio_added_ts__month - , subq_5.bio_added_ts__quarter - , subq_5.bio_added_ts__year - , subq_5.bio_added_ts__extract_year - , subq_5.bio_added_ts__extract_quarter - , subq_5.bio_added_ts__extract_month - , subq_5.bio_added_ts__extract_day - , subq_5.bio_added_ts__extract_dow - , subq_5.bio_added_ts__extract_doy - , subq_5.last_login_ts__minute - , subq_5.last_login_ts__hour - , subq_5.last_login_ts__day - , subq_5.last_login_ts__week - , subq_5.last_login_ts__month - , subq_5.last_login_ts__quarter - , subq_5.last_login_ts__year - , subq_5.last_login_ts__extract_year - , subq_5.last_login_ts__extract_quarter - , subq_5.last_login_ts__extract_month - , subq_5.last_login_ts__extract_day - , subq_5.last_login_ts__extract_dow - , subq_5.last_login_ts__extract_doy - , subq_5.archived_at__hour - , subq_5.archived_at__day - , subq_5.archived_at__week - , subq_5.archived_at__month - , subq_5.archived_at__quarter - , subq_5.archived_at__year - , subq_5.archived_at__extract_year - , subq_5.archived_at__extract_quarter - , subq_5.archived_at__extract_month - , subq_5.archived_at__extract_day - , subq_5.archived_at__extract_dow - , subq_5.archived_at__extract_doy - , subq_5.user__ds__day - , subq_5.user__ds__week - , subq_5.user__ds__month - , subq_5.user__ds__quarter - , subq_5.user__ds__year - , subq_5.user__ds__extract_year - , subq_5.user__ds__extract_quarter - , subq_5.user__ds__extract_month - , subq_5.user__ds__extract_day - , subq_5.user__ds__extract_dow - , subq_5.user__ds__extract_doy - , subq_5.user__created_at__day - , subq_5.user__created_at__week - , subq_5.user__created_at__month - , subq_5.user__created_at__quarter - , subq_5.user__created_at__year - , subq_5.user__created_at__extract_year - , subq_5.user__created_at__extract_quarter - , subq_5.user__created_at__extract_month - , subq_5.user__created_at__extract_day - , subq_5.user__created_at__extract_dow - , subq_5.user__created_at__extract_doy - , subq_5.user__ds_partitioned__day - , subq_5.user__ds_partitioned__week - , subq_5.user__ds_partitioned__month - , subq_5.user__ds_partitioned__quarter - , subq_5.user__ds_partitioned__year - , subq_5.user__ds_partitioned__extract_year - , subq_5.user__ds_partitioned__extract_quarter - , subq_5.user__ds_partitioned__extract_month - , subq_5.user__ds_partitioned__extract_day - , subq_5.user__ds_partitioned__extract_dow - , subq_5.user__ds_partitioned__extract_doy - , subq_5.user__last_profile_edit_ts__millisecond - , subq_5.user__last_profile_edit_ts__second - , subq_5.user__last_profile_edit_ts__minute - , subq_5.user__last_profile_edit_ts__hour - , subq_5.user__last_profile_edit_ts__day - , subq_5.user__last_profile_edit_ts__week - , subq_5.user__last_profile_edit_ts__month - , subq_5.user__last_profile_edit_ts__quarter - , subq_5.user__last_profile_edit_ts__year - , subq_5.user__last_profile_edit_ts__extract_year - , subq_5.user__last_profile_edit_ts__extract_quarter - , subq_5.user__last_profile_edit_ts__extract_month - , subq_5.user__last_profile_edit_ts__extract_day - , subq_5.user__last_profile_edit_ts__extract_dow - , subq_5.user__last_profile_edit_ts__extract_doy - , subq_5.user__bio_added_ts__second - , subq_5.user__bio_added_ts__minute - , subq_5.user__bio_added_ts__hour - , subq_5.user__bio_added_ts__day - , subq_5.user__bio_added_ts__week - , subq_5.user__bio_added_ts__month - , subq_5.user__bio_added_ts__quarter - , subq_5.user__bio_added_ts__year - , subq_5.user__bio_added_ts__extract_year - , subq_5.user__bio_added_ts__extract_quarter - , subq_5.user__bio_added_ts__extract_month - , subq_5.user__bio_added_ts__extract_day - , subq_5.user__bio_added_ts__extract_dow - , subq_5.user__bio_added_ts__extract_doy - , subq_5.user__last_login_ts__minute - , subq_5.user__last_login_ts__hour - , subq_5.user__last_login_ts__day - , subq_5.user__last_login_ts__week - , subq_5.user__last_login_ts__month - , subq_5.user__last_login_ts__quarter - , subq_5.user__last_login_ts__year - , subq_5.user__last_login_ts__extract_year - , subq_5.user__last_login_ts__extract_quarter - , subq_5.user__last_login_ts__extract_month - , subq_5.user__last_login_ts__extract_day - , subq_5.user__last_login_ts__extract_dow - , subq_5.user__last_login_ts__extract_doy - , subq_5.user__archived_at__hour - , subq_5.user__archived_at__day - , subq_5.user__archived_at__week - , subq_5.user__archived_at__month - , subq_5.user__archived_at__quarter - , subq_5.user__archived_at__year - , subq_5.user__archived_at__extract_year - , subq_5.user__archived_at__extract_quarter - , subq_5.user__archived_at__extract_month - , subq_5.user__archived_at__extract_day - , subq_5.user__archived_at__extract_dow - , subq_5.user__archived_at__extract_doy - , subq_5.metric_time__day - , subq_5.metric_time__week - , subq_5.metric_time__month - , subq_5.metric_time__quarter - , subq_5.metric_time__year - , subq_5.metric_time__extract_year - , subq_5.metric_time__extract_quarter - , subq_5.metric_time__extract_month - , subq_5.metric_time__extract_day - , subq_5.metric_time__extract_dow - , subq_5.metric_time__extract_doy - , subq_5.user - , subq_5.home_state - , subq_5.user__home_state + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.ds_partitioned__day + , subq_17.ds_partitioned__week + , subq_17.ds_partitioned__month + , subq_17.ds_partitioned__quarter + , subq_17.ds_partitioned__year + , subq_17.ds_partitioned__extract_year + , subq_17.ds_partitioned__extract_quarter + , subq_17.ds_partitioned__extract_month + , subq_17.ds_partitioned__extract_day + , subq_17.ds_partitioned__extract_dow + , subq_17.ds_partitioned__extract_doy + , subq_17.last_profile_edit_ts__millisecond + , subq_17.last_profile_edit_ts__second + , subq_17.last_profile_edit_ts__minute + , subq_17.last_profile_edit_ts__hour + , subq_17.last_profile_edit_ts__day + , subq_17.last_profile_edit_ts__week + , subq_17.last_profile_edit_ts__month + , subq_17.last_profile_edit_ts__quarter + , subq_17.last_profile_edit_ts__year + , subq_17.last_profile_edit_ts__extract_year + , subq_17.last_profile_edit_ts__extract_quarter + , subq_17.last_profile_edit_ts__extract_month + , subq_17.last_profile_edit_ts__extract_day + , subq_17.last_profile_edit_ts__extract_dow + , subq_17.last_profile_edit_ts__extract_doy + , subq_17.bio_added_ts__second + , subq_17.bio_added_ts__minute + , subq_17.bio_added_ts__hour + , subq_17.bio_added_ts__day + , subq_17.bio_added_ts__week + , subq_17.bio_added_ts__month + , subq_17.bio_added_ts__quarter + , subq_17.bio_added_ts__year + , subq_17.bio_added_ts__extract_year + , subq_17.bio_added_ts__extract_quarter + , subq_17.bio_added_ts__extract_month + , subq_17.bio_added_ts__extract_day + , subq_17.bio_added_ts__extract_dow + , subq_17.bio_added_ts__extract_doy + , subq_17.last_login_ts__minute + , subq_17.last_login_ts__hour + , subq_17.last_login_ts__day + , subq_17.last_login_ts__week + , subq_17.last_login_ts__month + , subq_17.last_login_ts__quarter + , subq_17.last_login_ts__year + , subq_17.last_login_ts__extract_year + , subq_17.last_login_ts__extract_quarter + , subq_17.last_login_ts__extract_month + , subq_17.last_login_ts__extract_day + , subq_17.last_login_ts__extract_dow + , subq_17.last_login_ts__extract_doy + , subq_17.archived_at__hour + , subq_17.archived_at__day + , subq_17.archived_at__week + , subq_17.archived_at__month + , subq_17.archived_at__quarter + , subq_17.archived_at__year + , subq_17.archived_at__extract_year + , subq_17.archived_at__extract_quarter + , subq_17.archived_at__extract_month + , subq_17.archived_at__extract_day + , subq_17.archived_at__extract_dow + , subq_17.archived_at__extract_doy + , subq_17.user__ds__day + , subq_17.user__ds__week + , subq_17.user__ds__month + , subq_17.user__ds__quarter + , subq_17.user__ds__year + , subq_17.user__ds__extract_year + , subq_17.user__ds__extract_quarter + , subq_17.user__ds__extract_month + , subq_17.user__ds__extract_day + , subq_17.user__ds__extract_dow + , subq_17.user__ds__extract_doy + , subq_17.user__created_at__day + , subq_17.user__created_at__week + , subq_17.user__created_at__month + , subq_17.user__created_at__quarter + , subq_17.user__created_at__year + , subq_17.user__created_at__extract_year + , subq_17.user__created_at__extract_quarter + , subq_17.user__created_at__extract_month + , subq_17.user__created_at__extract_day + , subq_17.user__created_at__extract_dow + , subq_17.user__created_at__extract_doy + , subq_17.user__ds_partitioned__day + , subq_17.user__ds_partitioned__week + , subq_17.user__ds_partitioned__month + , subq_17.user__ds_partitioned__quarter + , subq_17.user__ds_partitioned__year + , subq_17.user__ds_partitioned__extract_year + , subq_17.user__ds_partitioned__extract_quarter + , subq_17.user__ds_partitioned__extract_month + , subq_17.user__ds_partitioned__extract_day + , subq_17.user__ds_partitioned__extract_dow + , subq_17.user__ds_partitioned__extract_doy + , subq_17.user__last_profile_edit_ts__millisecond + , subq_17.user__last_profile_edit_ts__second + , subq_17.user__last_profile_edit_ts__minute + , subq_17.user__last_profile_edit_ts__hour + , subq_17.user__last_profile_edit_ts__day + , subq_17.user__last_profile_edit_ts__week + , subq_17.user__last_profile_edit_ts__month + , subq_17.user__last_profile_edit_ts__quarter + , subq_17.user__last_profile_edit_ts__year + , subq_17.user__last_profile_edit_ts__extract_year + , subq_17.user__last_profile_edit_ts__extract_quarter + , subq_17.user__last_profile_edit_ts__extract_month + , subq_17.user__last_profile_edit_ts__extract_day + , subq_17.user__last_profile_edit_ts__extract_dow + , subq_17.user__last_profile_edit_ts__extract_doy + , subq_17.user__bio_added_ts__second + , subq_17.user__bio_added_ts__minute + , subq_17.user__bio_added_ts__hour + , subq_17.user__bio_added_ts__day + , subq_17.user__bio_added_ts__week + , subq_17.user__bio_added_ts__month + , subq_17.user__bio_added_ts__quarter + , subq_17.user__bio_added_ts__year + , subq_17.user__bio_added_ts__extract_year + , subq_17.user__bio_added_ts__extract_quarter + , subq_17.user__bio_added_ts__extract_month + , subq_17.user__bio_added_ts__extract_day + , subq_17.user__bio_added_ts__extract_dow + , subq_17.user__bio_added_ts__extract_doy + , subq_17.user__last_login_ts__minute + , subq_17.user__last_login_ts__hour + , subq_17.user__last_login_ts__day + , subq_17.user__last_login_ts__week + , subq_17.user__last_login_ts__month + , subq_17.user__last_login_ts__quarter + , subq_17.user__last_login_ts__year + , subq_17.user__last_login_ts__extract_year + , subq_17.user__last_login_ts__extract_quarter + , subq_17.user__last_login_ts__extract_month + , subq_17.user__last_login_ts__extract_day + , subq_17.user__last_login_ts__extract_dow + , subq_17.user__last_login_ts__extract_doy + , subq_17.user__archived_at__hour + , subq_17.user__archived_at__day + , subq_17.user__archived_at__week + , subq_17.user__archived_at__month + , subq_17.user__archived_at__quarter + , subq_17.user__archived_at__year + , subq_17.user__archived_at__extract_year + , subq_17.user__archived_at__extract_quarter + , subq_17.user__archived_at__extract_month + , subq_17.user__archived_at__extract_day + , subq_17.user__archived_at__extract_dow + , subq_17.user__archived_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.user + , subq_17.home_state + , subq_17.user__home_state FROM ( -- Metric Time Dimension 'created_at' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.last_profile_edit_ts__millisecond - , subq_4.last_profile_edit_ts__second - , subq_4.last_profile_edit_ts__minute - , subq_4.last_profile_edit_ts__hour - , subq_4.last_profile_edit_ts__day - , subq_4.last_profile_edit_ts__week - , subq_4.last_profile_edit_ts__month - , subq_4.last_profile_edit_ts__quarter - , subq_4.last_profile_edit_ts__year - , subq_4.last_profile_edit_ts__extract_year - , subq_4.last_profile_edit_ts__extract_quarter - , subq_4.last_profile_edit_ts__extract_month - , subq_4.last_profile_edit_ts__extract_day - , subq_4.last_profile_edit_ts__extract_dow - , subq_4.last_profile_edit_ts__extract_doy - , subq_4.bio_added_ts__second - , subq_4.bio_added_ts__minute - , subq_4.bio_added_ts__hour - , subq_4.bio_added_ts__day - , subq_4.bio_added_ts__week - , subq_4.bio_added_ts__month - , subq_4.bio_added_ts__quarter - , subq_4.bio_added_ts__year - , subq_4.bio_added_ts__extract_year - , subq_4.bio_added_ts__extract_quarter - , subq_4.bio_added_ts__extract_month - , subq_4.bio_added_ts__extract_day - , subq_4.bio_added_ts__extract_dow - , subq_4.bio_added_ts__extract_doy - , subq_4.last_login_ts__minute - , subq_4.last_login_ts__hour - , subq_4.last_login_ts__day - , subq_4.last_login_ts__week - , subq_4.last_login_ts__month - , subq_4.last_login_ts__quarter - , subq_4.last_login_ts__year - , subq_4.last_login_ts__extract_year - , subq_4.last_login_ts__extract_quarter - , subq_4.last_login_ts__extract_month - , subq_4.last_login_ts__extract_day - , subq_4.last_login_ts__extract_dow - , subq_4.last_login_ts__extract_doy - , subq_4.archived_at__hour - , subq_4.archived_at__day - , subq_4.archived_at__week - , subq_4.archived_at__month - , subq_4.archived_at__quarter - , subq_4.archived_at__year - , subq_4.archived_at__extract_year - , subq_4.archived_at__extract_quarter - , subq_4.archived_at__extract_month - , subq_4.archived_at__extract_day - , subq_4.archived_at__extract_dow - , subq_4.archived_at__extract_doy - , subq_4.user__ds__day - , subq_4.user__ds__week - , subq_4.user__ds__month - , subq_4.user__ds__quarter - , subq_4.user__ds__year - , subq_4.user__ds__extract_year - , subq_4.user__ds__extract_quarter - , subq_4.user__ds__extract_month - , subq_4.user__ds__extract_day - , subq_4.user__ds__extract_dow - , subq_4.user__ds__extract_doy - , subq_4.user__created_at__day - , subq_4.user__created_at__week - , subq_4.user__created_at__month - , subq_4.user__created_at__quarter - , subq_4.user__created_at__year - , subq_4.user__created_at__extract_year - , subq_4.user__created_at__extract_quarter - , subq_4.user__created_at__extract_month - , subq_4.user__created_at__extract_day - , subq_4.user__created_at__extract_dow - , subq_4.user__created_at__extract_doy - , subq_4.user__ds_partitioned__day - , subq_4.user__ds_partitioned__week - , subq_4.user__ds_partitioned__month - , subq_4.user__ds_partitioned__quarter - , subq_4.user__ds_partitioned__year - , subq_4.user__ds_partitioned__extract_year - , subq_4.user__ds_partitioned__extract_quarter - , subq_4.user__ds_partitioned__extract_month - , subq_4.user__ds_partitioned__extract_day - , subq_4.user__ds_partitioned__extract_dow - , subq_4.user__ds_partitioned__extract_doy - , subq_4.user__last_profile_edit_ts__millisecond - , subq_4.user__last_profile_edit_ts__second - , subq_4.user__last_profile_edit_ts__minute - , subq_4.user__last_profile_edit_ts__hour - , subq_4.user__last_profile_edit_ts__day - , subq_4.user__last_profile_edit_ts__week - , subq_4.user__last_profile_edit_ts__month - , subq_4.user__last_profile_edit_ts__quarter - , subq_4.user__last_profile_edit_ts__year - , subq_4.user__last_profile_edit_ts__extract_year - , subq_4.user__last_profile_edit_ts__extract_quarter - , subq_4.user__last_profile_edit_ts__extract_month - , subq_4.user__last_profile_edit_ts__extract_day - , subq_4.user__last_profile_edit_ts__extract_dow - , subq_4.user__last_profile_edit_ts__extract_doy - , subq_4.user__bio_added_ts__second - , subq_4.user__bio_added_ts__minute - , subq_4.user__bio_added_ts__hour - , subq_4.user__bio_added_ts__day - , subq_4.user__bio_added_ts__week - , subq_4.user__bio_added_ts__month - , subq_4.user__bio_added_ts__quarter - , subq_4.user__bio_added_ts__year - , subq_4.user__bio_added_ts__extract_year - , subq_4.user__bio_added_ts__extract_quarter - , subq_4.user__bio_added_ts__extract_month - , subq_4.user__bio_added_ts__extract_day - , subq_4.user__bio_added_ts__extract_dow - , subq_4.user__bio_added_ts__extract_doy - , subq_4.user__last_login_ts__minute - , subq_4.user__last_login_ts__hour - , subq_4.user__last_login_ts__day - , subq_4.user__last_login_ts__week - , subq_4.user__last_login_ts__month - , subq_4.user__last_login_ts__quarter - , subq_4.user__last_login_ts__year - , subq_4.user__last_login_ts__extract_year - , subq_4.user__last_login_ts__extract_quarter - , subq_4.user__last_login_ts__extract_month - , subq_4.user__last_login_ts__extract_day - , subq_4.user__last_login_ts__extract_dow - , subq_4.user__last_login_ts__extract_doy - , subq_4.user__archived_at__hour - , subq_4.user__archived_at__day - , subq_4.user__archived_at__week - , subq_4.user__archived_at__month - , subq_4.user__archived_at__quarter - , subq_4.user__archived_at__year - , subq_4.user__archived_at__extract_year - , subq_4.user__archived_at__extract_quarter - , subq_4.user__archived_at__extract_month - , subq_4.user__archived_at__extract_day - , subq_4.user__archived_at__extract_dow - , subq_4.user__archived_at__extract_doy - , subq_4.created_at__day AS metric_time__day - , subq_4.created_at__week AS metric_time__week - , subq_4.created_at__month AS metric_time__month - , subq_4.created_at__quarter AS metric_time__quarter - , subq_4.created_at__year AS metric_time__year - , subq_4.created_at__extract_year AS metric_time__extract_year - , subq_4.created_at__extract_quarter AS metric_time__extract_quarter - , subq_4.created_at__extract_month AS metric_time__extract_month - , subq_4.created_at__extract_day AS metric_time__extract_day - , subq_4.created_at__extract_dow AS metric_time__extract_dow - , subq_4.created_at__extract_doy AS metric_time__extract_doy - , subq_4.user - , subq_4.home_state - , subq_4.user__home_state - , subq_4.new_users + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.created_at__day + , subq_16.created_at__week + , subq_16.created_at__month + , subq_16.created_at__quarter + , subq_16.created_at__year + , subq_16.created_at__extract_year + , subq_16.created_at__extract_quarter + , subq_16.created_at__extract_month + , subq_16.created_at__extract_day + , subq_16.created_at__extract_dow + , subq_16.created_at__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.last_profile_edit_ts__millisecond + , subq_16.last_profile_edit_ts__second + , subq_16.last_profile_edit_ts__minute + , subq_16.last_profile_edit_ts__hour + , subq_16.last_profile_edit_ts__day + , subq_16.last_profile_edit_ts__week + , subq_16.last_profile_edit_ts__month + , subq_16.last_profile_edit_ts__quarter + , subq_16.last_profile_edit_ts__year + , subq_16.last_profile_edit_ts__extract_year + , subq_16.last_profile_edit_ts__extract_quarter + , subq_16.last_profile_edit_ts__extract_month + , subq_16.last_profile_edit_ts__extract_day + , subq_16.last_profile_edit_ts__extract_dow + , subq_16.last_profile_edit_ts__extract_doy + , subq_16.bio_added_ts__second + , subq_16.bio_added_ts__minute + , subq_16.bio_added_ts__hour + , subq_16.bio_added_ts__day + , subq_16.bio_added_ts__week + , subq_16.bio_added_ts__month + , subq_16.bio_added_ts__quarter + , subq_16.bio_added_ts__year + , subq_16.bio_added_ts__extract_year + , subq_16.bio_added_ts__extract_quarter + , subq_16.bio_added_ts__extract_month + , subq_16.bio_added_ts__extract_day + , subq_16.bio_added_ts__extract_dow + , subq_16.bio_added_ts__extract_doy + , subq_16.last_login_ts__minute + , subq_16.last_login_ts__hour + , subq_16.last_login_ts__day + , subq_16.last_login_ts__week + , subq_16.last_login_ts__month + , subq_16.last_login_ts__quarter + , subq_16.last_login_ts__year + , subq_16.last_login_ts__extract_year + , subq_16.last_login_ts__extract_quarter + , subq_16.last_login_ts__extract_month + , subq_16.last_login_ts__extract_day + , subq_16.last_login_ts__extract_dow + , subq_16.last_login_ts__extract_doy + , subq_16.archived_at__hour + , subq_16.archived_at__day + , subq_16.archived_at__week + , subq_16.archived_at__month + , subq_16.archived_at__quarter + , subq_16.archived_at__year + , subq_16.archived_at__extract_year + , subq_16.archived_at__extract_quarter + , subq_16.archived_at__extract_month + , subq_16.archived_at__extract_day + , subq_16.archived_at__extract_dow + , subq_16.archived_at__extract_doy + , subq_16.user__ds__day + , subq_16.user__ds__week + , subq_16.user__ds__month + , subq_16.user__ds__quarter + , subq_16.user__ds__year + , subq_16.user__ds__extract_year + , subq_16.user__ds__extract_quarter + , subq_16.user__ds__extract_month + , subq_16.user__ds__extract_day + , subq_16.user__ds__extract_dow + , subq_16.user__ds__extract_doy + , subq_16.user__created_at__day + , subq_16.user__created_at__week + , subq_16.user__created_at__month + , subq_16.user__created_at__quarter + , subq_16.user__created_at__year + , subq_16.user__created_at__extract_year + , subq_16.user__created_at__extract_quarter + , subq_16.user__created_at__extract_month + , subq_16.user__created_at__extract_day + , subq_16.user__created_at__extract_dow + , subq_16.user__created_at__extract_doy + , subq_16.user__ds_partitioned__day + , subq_16.user__ds_partitioned__week + , subq_16.user__ds_partitioned__month + , subq_16.user__ds_partitioned__quarter + , subq_16.user__ds_partitioned__year + , subq_16.user__ds_partitioned__extract_year + , subq_16.user__ds_partitioned__extract_quarter + , subq_16.user__ds_partitioned__extract_month + , subq_16.user__ds_partitioned__extract_day + , subq_16.user__ds_partitioned__extract_dow + , subq_16.user__ds_partitioned__extract_doy + , subq_16.user__last_profile_edit_ts__millisecond + , subq_16.user__last_profile_edit_ts__second + , subq_16.user__last_profile_edit_ts__minute + , subq_16.user__last_profile_edit_ts__hour + , subq_16.user__last_profile_edit_ts__day + , subq_16.user__last_profile_edit_ts__week + , subq_16.user__last_profile_edit_ts__month + , subq_16.user__last_profile_edit_ts__quarter + , subq_16.user__last_profile_edit_ts__year + , subq_16.user__last_profile_edit_ts__extract_year + , subq_16.user__last_profile_edit_ts__extract_quarter + , subq_16.user__last_profile_edit_ts__extract_month + , subq_16.user__last_profile_edit_ts__extract_day + , subq_16.user__last_profile_edit_ts__extract_dow + , subq_16.user__last_profile_edit_ts__extract_doy + , subq_16.user__bio_added_ts__second + , subq_16.user__bio_added_ts__minute + , subq_16.user__bio_added_ts__hour + , subq_16.user__bio_added_ts__day + , subq_16.user__bio_added_ts__week + , subq_16.user__bio_added_ts__month + , subq_16.user__bio_added_ts__quarter + , subq_16.user__bio_added_ts__year + , subq_16.user__bio_added_ts__extract_year + , subq_16.user__bio_added_ts__extract_quarter + , subq_16.user__bio_added_ts__extract_month + , subq_16.user__bio_added_ts__extract_day + , subq_16.user__bio_added_ts__extract_dow + , subq_16.user__bio_added_ts__extract_doy + , subq_16.user__last_login_ts__minute + , subq_16.user__last_login_ts__hour + , subq_16.user__last_login_ts__day + , subq_16.user__last_login_ts__week + , subq_16.user__last_login_ts__month + , subq_16.user__last_login_ts__quarter + , subq_16.user__last_login_ts__year + , subq_16.user__last_login_ts__extract_year + , subq_16.user__last_login_ts__extract_quarter + , subq_16.user__last_login_ts__extract_month + , subq_16.user__last_login_ts__extract_day + , subq_16.user__last_login_ts__extract_dow + , subq_16.user__last_login_ts__extract_doy + , subq_16.user__archived_at__hour + , subq_16.user__archived_at__day + , subq_16.user__archived_at__week + , subq_16.user__archived_at__month + , subq_16.user__archived_at__quarter + , subq_16.user__archived_at__year + , subq_16.user__archived_at__extract_year + , subq_16.user__archived_at__extract_quarter + , subq_16.user__archived_at__extract_month + , subq_16.user__archived_at__extract_day + , subq_16.user__archived_at__extract_dow + , subq_16.user__archived_at__extract_doy + , subq_16.created_at__day AS metric_time__day + , subq_16.created_at__week AS metric_time__week + , subq_16.created_at__month AS metric_time__month + , subq_16.created_at__quarter AS metric_time__quarter + , subq_16.created_at__year AS metric_time__year + , subq_16.created_at__extract_year AS metric_time__extract_year + , subq_16.created_at__extract_quarter AS metric_time__extract_quarter + , subq_16.created_at__extract_month AS metric_time__extract_month + , subq_16.created_at__extract_day AS metric_time__extract_day + , subq_16.created_at__extract_dow AS metric_time__extract_dow + , subq_16.created_at__extract_doy AS metric_time__extract_doy + , subq_16.user + , subq_16.home_state + , subq_16.user__home_state + , subq_16.new_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -1376,21 +1376,21 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_3.user = subq_6.user - ) subq_7 - ) subq_8 + subq_15.user = subq_18.user + ) subq_19 + ) subq_20 ON ( - subq_1.listing = subq_8.listing + subq_13.listing = subq_20.listing ) AND ( - subq_1.ds_partitioned__day = subq_8.user__ds_partitioned__day + subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day ) - ) subq_9 - ) subq_10 + ) subq_21 + ) subq_22 GROUP BY - subq_10.listing__user__bio_added_ts__minute -) subq_11 + subq_22.listing__user__bio_added_ts__minute +) subq_23 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql index 55b205d45a..320a5059c0 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_simple_metric_with_joined_sub_daily_dimension__plan0_optimized.sql @@ -7,8 +7,8 @@ sql_engine: Trino -- Aggregate Measures -- Compute Metrics via Expressions SELECT - subq_20.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute - , SUM(subq_13.bookings) AS bookings + subq_32.user__bio_added_ts__minute AS listing__user__bio_added_ts__minute + , SUM(subq_25.bookings) AS bookings FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -17,7 +17,7 @@ FROM ( , listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 -) subq_13 +) subq_25 LEFT OUTER JOIN ( -- Join Standard Outputs -- Pass Only Elements: ['user__ds_partitioned__day', 'user__bio_added_ts__minute', 'listing'] @@ -30,12 +30,12 @@ LEFT OUTER JOIN ( ***************************.dim_users users_ds_source_src_28000 ON listings_latest_src_28000.user_id = users_ds_source_src_28000.user_id -) subq_20 +) subq_32 ON ( - subq_13.listing = subq_20.listing + subq_25.listing = subq_32.listing ) AND ( - subq_13.ds_partitioned__day = subq_20.user__ds_partitioned__day + subq_25.ds_partitioned__day = subq_32.user__ds_partitioned__day ) GROUP BY - subq_20.user__bio_added_ts__minute + subq_32.user__bio_added_ts__minute diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0.sql index 727143509a..e8fb159cef 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0.sql @@ -4,52 +4,52 @@ sql_engine: Trino --- -- Compute Metrics via Expressions SELECT - subq_10.metric_time__hour - , subq_10.archived_users AS subdaily_join_to_time_spine_metric + subq_11.metric_time__hour + , subq_11.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_9.metric_time__hour - , subq_9.archived_users + subq_10.metric_time__hour + , subq_10.archived_users FROM ( -- Join to Time Spine Dataset SELECT - subq_8.metric_time__hour AS metric_time__hour - , subq_4.archived_users AS archived_users + subq_9.metric_time__hour AS metric_time__hour + , subq_5.archived_users AS archived_users FROM ( -- Pass Only Elements: ['metric_time__hour',] SELECT - subq_7.metric_time__hour + subq_8.metric_time__hour FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_6.metric_time__hour - , subq_6.ts__day - , subq_6.ts__week - , subq_6.ts__month - , subq_6.ts__quarter - , subq_6.ts__year - , subq_6.ts__extract_year - , subq_6.ts__extract_quarter - , subq_6.ts__extract_month - , subq_6.ts__extract_day - , subq_6.ts__extract_dow - , subq_6.ts__extract_doy + subq_7.metric_time__hour + , subq_7.ts__day + , subq_7.ts__week + , subq_7.ts__month + , subq_7.ts__quarter + , subq_7.ts__year + , subq_7.ts__extract_year + , subq_7.ts__extract_quarter + , subq_7.ts__extract_month + , subq_7.ts__extract_day + , subq_7.ts__extract_dow + , subq_7.ts__extract_doy FROM ( -- Change Column Aliases SELECT - subq_5.ts__hour AS metric_time__hour - , subq_5.ts__day - , subq_5.ts__week - , subq_5.ts__month - , subq_5.ts__quarter - , subq_5.ts__year - , subq_5.ts__extract_year - , subq_5.ts__extract_quarter - , subq_5.ts__extract_month - , subq_5.ts__extract_day - , subq_5.ts__extract_dow - , subq_5.ts__extract_doy + subq_6.ts__hour AS metric_time__hour + , subq_6.ts__day + , subq_6.ts__week + , subq_6.ts__month + , subq_6.ts__quarter + , subq_6.ts__year + , subq_6.ts__extract_year + , subq_6.ts__extract_quarter + , subq_6.ts__extract_month + , subq_6.ts__extract_day + , subq_6.ts__extract_dow + , subq_6.ts__extract_doy FROM ( -- Read From Time Spine 'mf_time_spine_hour' SELECT @@ -66,407 +66,407 @@ FROM ( , EXTRACT(DAY_OF_WEEK FROM time_spine_src_28005.ts) AS ts__extract_dow , EXTRACT(doy FROM time_spine_src_28005.ts) AS ts__extract_doy FROM ***************************.mf_time_spine_hour time_spine_src_28005 - ) subq_5 - ) subq_6 - WHERE subq_6.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' - ) subq_7 - ) subq_8 + ) subq_6 + ) subq_7 + WHERE subq_7.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Aggregate Measures SELECT - subq_3.metric_time__hour - , SUM(subq_3.archived_users) AS archived_users + subq_4.metric_time__hour + , SUM(subq_4.archived_users) AS archived_users FROM ( -- Pass Only Elements: ['archived_users', 'metric_time__hour'] SELECT - subq_2.metric_time__hour - , subq_2.archived_users + subq_3.metric_time__hour + , subq_3.archived_users FROM ( -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.created_at__day - , subq_1.created_at__week - , subq_1.created_at__month - , subq_1.created_at__quarter - , subq_1.created_at__year - , subq_1.created_at__extract_year - , subq_1.created_at__extract_quarter - , subq_1.created_at__extract_month - , subq_1.created_at__extract_day - , subq_1.created_at__extract_dow - , subq_1.created_at__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.last_profile_edit_ts__millisecond - , subq_1.last_profile_edit_ts__second - , subq_1.last_profile_edit_ts__minute - , subq_1.last_profile_edit_ts__hour - , subq_1.last_profile_edit_ts__day - , subq_1.last_profile_edit_ts__week - , subq_1.last_profile_edit_ts__month - , subq_1.last_profile_edit_ts__quarter - , subq_1.last_profile_edit_ts__year - , subq_1.last_profile_edit_ts__extract_year - , subq_1.last_profile_edit_ts__extract_quarter - , subq_1.last_profile_edit_ts__extract_month - , subq_1.last_profile_edit_ts__extract_day - , subq_1.last_profile_edit_ts__extract_dow - , subq_1.last_profile_edit_ts__extract_doy - , subq_1.bio_added_ts__second - , subq_1.bio_added_ts__minute - , subq_1.bio_added_ts__hour - , subq_1.bio_added_ts__day - , subq_1.bio_added_ts__week - , subq_1.bio_added_ts__month - , subq_1.bio_added_ts__quarter - , subq_1.bio_added_ts__year - , subq_1.bio_added_ts__extract_year - , subq_1.bio_added_ts__extract_quarter - , subq_1.bio_added_ts__extract_month - , subq_1.bio_added_ts__extract_day - , subq_1.bio_added_ts__extract_dow - , subq_1.bio_added_ts__extract_doy - , subq_1.last_login_ts__minute - , subq_1.last_login_ts__hour - , subq_1.last_login_ts__day - , subq_1.last_login_ts__week - , subq_1.last_login_ts__month - , subq_1.last_login_ts__quarter - , subq_1.last_login_ts__year - , subq_1.last_login_ts__extract_year - , subq_1.last_login_ts__extract_quarter - , subq_1.last_login_ts__extract_month - , subq_1.last_login_ts__extract_day - , subq_1.last_login_ts__extract_dow - , subq_1.last_login_ts__extract_doy - , subq_1.archived_at__hour - , subq_1.archived_at__day - , subq_1.archived_at__week - , subq_1.archived_at__month - , subq_1.archived_at__quarter - , subq_1.archived_at__year - , subq_1.archived_at__extract_year - , subq_1.archived_at__extract_quarter - , subq_1.archived_at__extract_month - , subq_1.archived_at__extract_day - , subq_1.archived_at__extract_dow - , subq_1.archived_at__extract_doy - , subq_1.user__ds__day - , subq_1.user__ds__week - , subq_1.user__ds__month - , subq_1.user__ds__quarter - , subq_1.user__ds__year - , subq_1.user__ds__extract_year - , subq_1.user__ds__extract_quarter - , subq_1.user__ds__extract_month - , subq_1.user__ds__extract_day - , subq_1.user__ds__extract_dow - , subq_1.user__ds__extract_doy - , subq_1.user__created_at__day - , subq_1.user__created_at__week - , subq_1.user__created_at__month - , subq_1.user__created_at__quarter - , subq_1.user__created_at__year - , subq_1.user__created_at__extract_year - , subq_1.user__created_at__extract_quarter - , subq_1.user__created_at__extract_month - , subq_1.user__created_at__extract_day - , subq_1.user__created_at__extract_dow - , subq_1.user__created_at__extract_doy - , subq_1.user__ds_partitioned__day - , subq_1.user__ds_partitioned__week - , subq_1.user__ds_partitioned__month - , subq_1.user__ds_partitioned__quarter - , subq_1.user__ds_partitioned__year - , subq_1.user__ds_partitioned__extract_year - , subq_1.user__ds_partitioned__extract_quarter - , subq_1.user__ds_partitioned__extract_month - , subq_1.user__ds_partitioned__extract_day - , subq_1.user__ds_partitioned__extract_dow - , subq_1.user__ds_partitioned__extract_doy - , subq_1.user__last_profile_edit_ts__millisecond - , subq_1.user__last_profile_edit_ts__second - , subq_1.user__last_profile_edit_ts__minute - , subq_1.user__last_profile_edit_ts__hour - , subq_1.user__last_profile_edit_ts__day - , subq_1.user__last_profile_edit_ts__week - , subq_1.user__last_profile_edit_ts__month - , subq_1.user__last_profile_edit_ts__quarter - , subq_1.user__last_profile_edit_ts__year - , subq_1.user__last_profile_edit_ts__extract_year - , subq_1.user__last_profile_edit_ts__extract_quarter - , subq_1.user__last_profile_edit_ts__extract_month - , subq_1.user__last_profile_edit_ts__extract_day - , subq_1.user__last_profile_edit_ts__extract_dow - , subq_1.user__last_profile_edit_ts__extract_doy - , subq_1.user__bio_added_ts__second - , subq_1.user__bio_added_ts__minute - , subq_1.user__bio_added_ts__hour - , subq_1.user__bio_added_ts__day - , subq_1.user__bio_added_ts__week - , subq_1.user__bio_added_ts__month - , subq_1.user__bio_added_ts__quarter - , subq_1.user__bio_added_ts__year - , subq_1.user__bio_added_ts__extract_year - , subq_1.user__bio_added_ts__extract_quarter - , subq_1.user__bio_added_ts__extract_month - , subq_1.user__bio_added_ts__extract_day - , subq_1.user__bio_added_ts__extract_dow - , subq_1.user__bio_added_ts__extract_doy - , subq_1.user__last_login_ts__minute - , subq_1.user__last_login_ts__hour - , subq_1.user__last_login_ts__day - , subq_1.user__last_login_ts__week - , subq_1.user__last_login_ts__month - , subq_1.user__last_login_ts__quarter - , subq_1.user__last_login_ts__year - , subq_1.user__last_login_ts__extract_year - , subq_1.user__last_login_ts__extract_quarter - , subq_1.user__last_login_ts__extract_month - , subq_1.user__last_login_ts__extract_day - , subq_1.user__last_login_ts__extract_dow - , subq_1.user__last_login_ts__extract_doy - , subq_1.user__archived_at__hour - , subq_1.user__archived_at__day - , subq_1.user__archived_at__week - , subq_1.user__archived_at__month - , subq_1.user__archived_at__quarter - , subq_1.user__archived_at__year - , subq_1.user__archived_at__extract_year - , subq_1.user__archived_at__extract_quarter - , subq_1.user__archived_at__extract_month - , subq_1.user__archived_at__extract_day - , subq_1.user__archived_at__extract_dow - , subq_1.user__archived_at__extract_doy - , subq_1.metric_time__hour - , subq_1.metric_time__day - , subq_1.metric_time__week - , subq_1.metric_time__month - , subq_1.metric_time__quarter - , subq_1.metric_time__year - , subq_1.metric_time__extract_year - , subq_1.metric_time__extract_quarter - , subq_1.metric_time__extract_month - , subq_1.metric_time__extract_day - , subq_1.metric_time__extract_dow - , subq_1.metric_time__extract_doy - , subq_1.user - , subq_1.home_state - , subq_1.user__home_state - , subq_1.archived_users + subq_2.ds__day + , subq_2.ds__week + , subq_2.ds__month + , subq_2.ds__quarter + , subq_2.ds__year + , subq_2.ds__extract_year + , subq_2.ds__extract_quarter + , subq_2.ds__extract_month + , subq_2.ds__extract_day + , subq_2.ds__extract_dow + , subq_2.ds__extract_doy + , subq_2.created_at__day + , subq_2.created_at__week + , subq_2.created_at__month + , subq_2.created_at__quarter + , subq_2.created_at__year + , subq_2.created_at__extract_year + , subq_2.created_at__extract_quarter + , subq_2.created_at__extract_month + , subq_2.created_at__extract_day + , subq_2.created_at__extract_dow + , subq_2.created_at__extract_doy + , subq_2.ds_partitioned__day + , subq_2.ds_partitioned__week + , subq_2.ds_partitioned__month + , subq_2.ds_partitioned__quarter + , subq_2.ds_partitioned__year + , subq_2.ds_partitioned__extract_year + , subq_2.ds_partitioned__extract_quarter + , subq_2.ds_partitioned__extract_month + , subq_2.ds_partitioned__extract_day + , subq_2.ds_partitioned__extract_dow + , subq_2.ds_partitioned__extract_doy + , subq_2.last_profile_edit_ts__millisecond + , subq_2.last_profile_edit_ts__second + , subq_2.last_profile_edit_ts__minute + , subq_2.last_profile_edit_ts__hour + , subq_2.last_profile_edit_ts__day + , subq_2.last_profile_edit_ts__week + , subq_2.last_profile_edit_ts__month + , subq_2.last_profile_edit_ts__quarter + , subq_2.last_profile_edit_ts__year + , subq_2.last_profile_edit_ts__extract_year + , subq_2.last_profile_edit_ts__extract_quarter + , subq_2.last_profile_edit_ts__extract_month + , subq_2.last_profile_edit_ts__extract_day + , subq_2.last_profile_edit_ts__extract_dow + , subq_2.last_profile_edit_ts__extract_doy + , subq_2.bio_added_ts__second + , subq_2.bio_added_ts__minute + , subq_2.bio_added_ts__hour + , subq_2.bio_added_ts__day + , subq_2.bio_added_ts__week + , subq_2.bio_added_ts__month + , subq_2.bio_added_ts__quarter + , subq_2.bio_added_ts__year + , subq_2.bio_added_ts__extract_year + , subq_2.bio_added_ts__extract_quarter + , subq_2.bio_added_ts__extract_month + , subq_2.bio_added_ts__extract_day + , subq_2.bio_added_ts__extract_dow + , subq_2.bio_added_ts__extract_doy + , subq_2.last_login_ts__minute + , subq_2.last_login_ts__hour + , subq_2.last_login_ts__day + , subq_2.last_login_ts__week + , subq_2.last_login_ts__month + , subq_2.last_login_ts__quarter + , subq_2.last_login_ts__year + , subq_2.last_login_ts__extract_year + , subq_2.last_login_ts__extract_quarter + , subq_2.last_login_ts__extract_month + , subq_2.last_login_ts__extract_day + , subq_2.last_login_ts__extract_dow + , subq_2.last_login_ts__extract_doy + , subq_2.archived_at__hour + , subq_2.archived_at__day + , subq_2.archived_at__week + , subq_2.archived_at__month + , subq_2.archived_at__quarter + , subq_2.archived_at__year + , subq_2.archived_at__extract_year + , subq_2.archived_at__extract_quarter + , subq_2.archived_at__extract_month + , subq_2.archived_at__extract_day + , subq_2.archived_at__extract_dow + , subq_2.archived_at__extract_doy + , subq_2.user__ds__day + , subq_2.user__ds__week + , subq_2.user__ds__month + , subq_2.user__ds__quarter + , subq_2.user__ds__year + , subq_2.user__ds__extract_year + , subq_2.user__ds__extract_quarter + , subq_2.user__ds__extract_month + , subq_2.user__ds__extract_day + , subq_2.user__ds__extract_dow + , subq_2.user__ds__extract_doy + , subq_2.user__created_at__day + , subq_2.user__created_at__week + , subq_2.user__created_at__month + , subq_2.user__created_at__quarter + , subq_2.user__created_at__year + , subq_2.user__created_at__extract_year + , subq_2.user__created_at__extract_quarter + , subq_2.user__created_at__extract_month + , subq_2.user__created_at__extract_day + , subq_2.user__created_at__extract_dow + , subq_2.user__created_at__extract_doy + , subq_2.user__ds_partitioned__day + , subq_2.user__ds_partitioned__week + , subq_2.user__ds_partitioned__month + , subq_2.user__ds_partitioned__quarter + , subq_2.user__ds_partitioned__year + , subq_2.user__ds_partitioned__extract_year + , subq_2.user__ds_partitioned__extract_quarter + , subq_2.user__ds_partitioned__extract_month + , subq_2.user__ds_partitioned__extract_day + , subq_2.user__ds_partitioned__extract_dow + , subq_2.user__ds_partitioned__extract_doy + , subq_2.user__last_profile_edit_ts__millisecond + , subq_2.user__last_profile_edit_ts__second + , subq_2.user__last_profile_edit_ts__minute + , subq_2.user__last_profile_edit_ts__hour + , subq_2.user__last_profile_edit_ts__day + , subq_2.user__last_profile_edit_ts__week + , subq_2.user__last_profile_edit_ts__month + , subq_2.user__last_profile_edit_ts__quarter + , subq_2.user__last_profile_edit_ts__year + , subq_2.user__last_profile_edit_ts__extract_year + , subq_2.user__last_profile_edit_ts__extract_quarter + , subq_2.user__last_profile_edit_ts__extract_month + , subq_2.user__last_profile_edit_ts__extract_day + , subq_2.user__last_profile_edit_ts__extract_dow + , subq_2.user__last_profile_edit_ts__extract_doy + , subq_2.user__bio_added_ts__second + , subq_2.user__bio_added_ts__minute + , subq_2.user__bio_added_ts__hour + , subq_2.user__bio_added_ts__day + , subq_2.user__bio_added_ts__week + , subq_2.user__bio_added_ts__month + , subq_2.user__bio_added_ts__quarter + , subq_2.user__bio_added_ts__year + , subq_2.user__bio_added_ts__extract_year + , subq_2.user__bio_added_ts__extract_quarter + , subq_2.user__bio_added_ts__extract_month + , subq_2.user__bio_added_ts__extract_day + , subq_2.user__bio_added_ts__extract_dow + , subq_2.user__bio_added_ts__extract_doy + , subq_2.user__last_login_ts__minute + , subq_2.user__last_login_ts__hour + , subq_2.user__last_login_ts__day + , subq_2.user__last_login_ts__week + , subq_2.user__last_login_ts__month + , subq_2.user__last_login_ts__quarter + , subq_2.user__last_login_ts__year + , subq_2.user__last_login_ts__extract_year + , subq_2.user__last_login_ts__extract_quarter + , subq_2.user__last_login_ts__extract_month + , subq_2.user__last_login_ts__extract_day + , subq_2.user__last_login_ts__extract_dow + , subq_2.user__last_login_ts__extract_doy + , subq_2.user__archived_at__hour + , subq_2.user__archived_at__day + , subq_2.user__archived_at__week + , subq_2.user__archived_at__month + , subq_2.user__archived_at__quarter + , subq_2.user__archived_at__year + , subq_2.user__archived_at__extract_year + , subq_2.user__archived_at__extract_quarter + , subq_2.user__archived_at__extract_month + , subq_2.user__archived_at__extract_day + , subq_2.user__archived_at__extract_dow + , subq_2.user__archived_at__extract_doy + , subq_2.metric_time__hour + , subq_2.metric_time__day + , subq_2.metric_time__week + , subq_2.metric_time__month + , subq_2.metric_time__quarter + , subq_2.metric_time__year + , subq_2.metric_time__extract_year + , subq_2.metric_time__extract_quarter + , subq_2.metric_time__extract_month + , subq_2.metric_time__extract_day + , subq_2.metric_time__extract_dow + , subq_2.metric_time__extract_doy + , subq_2.user + , subq_2.home_state + , subq_2.user__home_state + , subq_2.archived_users FROM ( -- Metric Time Dimension 'archived_at' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.last_profile_edit_ts__millisecond - , subq_0.last_profile_edit_ts__second - , subq_0.last_profile_edit_ts__minute - , subq_0.last_profile_edit_ts__hour - , subq_0.last_profile_edit_ts__day - , subq_0.last_profile_edit_ts__week - , subq_0.last_profile_edit_ts__month - , subq_0.last_profile_edit_ts__quarter - , subq_0.last_profile_edit_ts__year - , subq_0.last_profile_edit_ts__extract_year - , subq_0.last_profile_edit_ts__extract_quarter - , subq_0.last_profile_edit_ts__extract_month - , subq_0.last_profile_edit_ts__extract_day - , subq_0.last_profile_edit_ts__extract_dow - , subq_0.last_profile_edit_ts__extract_doy - , subq_0.bio_added_ts__second - , subq_0.bio_added_ts__minute - , subq_0.bio_added_ts__hour - , subq_0.bio_added_ts__day - , subq_0.bio_added_ts__week - , subq_0.bio_added_ts__month - , subq_0.bio_added_ts__quarter - , subq_0.bio_added_ts__year - , subq_0.bio_added_ts__extract_year - , subq_0.bio_added_ts__extract_quarter - , subq_0.bio_added_ts__extract_month - , subq_0.bio_added_ts__extract_day - , subq_0.bio_added_ts__extract_dow - , subq_0.bio_added_ts__extract_doy - , subq_0.last_login_ts__minute - , subq_0.last_login_ts__hour - , subq_0.last_login_ts__day - , subq_0.last_login_ts__week - , subq_0.last_login_ts__month - , subq_0.last_login_ts__quarter - , subq_0.last_login_ts__year - , subq_0.last_login_ts__extract_year - , subq_0.last_login_ts__extract_quarter - , subq_0.last_login_ts__extract_month - , subq_0.last_login_ts__extract_day - , subq_0.last_login_ts__extract_dow - , subq_0.last_login_ts__extract_doy - , subq_0.archived_at__hour - , subq_0.archived_at__day - , subq_0.archived_at__week - , subq_0.archived_at__month - , subq_0.archived_at__quarter - , subq_0.archived_at__year - , subq_0.archived_at__extract_year - , subq_0.archived_at__extract_quarter - , subq_0.archived_at__extract_month - , subq_0.archived_at__extract_day - , subq_0.archived_at__extract_dow - , subq_0.archived_at__extract_doy - , subq_0.user__ds__day - , subq_0.user__ds__week - , subq_0.user__ds__month - , subq_0.user__ds__quarter - , subq_0.user__ds__year - , subq_0.user__ds__extract_year - , subq_0.user__ds__extract_quarter - , subq_0.user__ds__extract_month - , subq_0.user__ds__extract_day - , subq_0.user__ds__extract_dow - , subq_0.user__ds__extract_doy - , subq_0.user__created_at__day - , subq_0.user__created_at__week - , subq_0.user__created_at__month - , subq_0.user__created_at__quarter - , subq_0.user__created_at__year - , subq_0.user__created_at__extract_year - , subq_0.user__created_at__extract_quarter - , subq_0.user__created_at__extract_month - , subq_0.user__created_at__extract_day - , subq_0.user__created_at__extract_dow - , subq_0.user__created_at__extract_doy - , subq_0.user__ds_partitioned__day - , subq_0.user__ds_partitioned__week - , subq_0.user__ds_partitioned__month - , subq_0.user__ds_partitioned__quarter - , subq_0.user__ds_partitioned__year - , subq_0.user__ds_partitioned__extract_year - , subq_0.user__ds_partitioned__extract_quarter - , subq_0.user__ds_partitioned__extract_month - , subq_0.user__ds_partitioned__extract_day - , subq_0.user__ds_partitioned__extract_dow - , subq_0.user__ds_partitioned__extract_doy - , subq_0.user__last_profile_edit_ts__millisecond - , subq_0.user__last_profile_edit_ts__second - , subq_0.user__last_profile_edit_ts__minute - , subq_0.user__last_profile_edit_ts__hour - , subq_0.user__last_profile_edit_ts__day - , subq_0.user__last_profile_edit_ts__week - , subq_0.user__last_profile_edit_ts__month - , subq_0.user__last_profile_edit_ts__quarter - , subq_0.user__last_profile_edit_ts__year - , subq_0.user__last_profile_edit_ts__extract_year - , subq_0.user__last_profile_edit_ts__extract_quarter - , subq_0.user__last_profile_edit_ts__extract_month - , subq_0.user__last_profile_edit_ts__extract_day - , subq_0.user__last_profile_edit_ts__extract_dow - , subq_0.user__last_profile_edit_ts__extract_doy - , subq_0.user__bio_added_ts__second - , subq_0.user__bio_added_ts__minute - , subq_0.user__bio_added_ts__hour - , subq_0.user__bio_added_ts__day - , subq_0.user__bio_added_ts__week - , subq_0.user__bio_added_ts__month - , subq_0.user__bio_added_ts__quarter - , subq_0.user__bio_added_ts__year - , subq_0.user__bio_added_ts__extract_year - , subq_0.user__bio_added_ts__extract_quarter - , subq_0.user__bio_added_ts__extract_month - , subq_0.user__bio_added_ts__extract_day - , subq_0.user__bio_added_ts__extract_dow - , subq_0.user__bio_added_ts__extract_doy - , subq_0.user__last_login_ts__minute - , subq_0.user__last_login_ts__hour - , subq_0.user__last_login_ts__day - , subq_0.user__last_login_ts__week - , subq_0.user__last_login_ts__month - , subq_0.user__last_login_ts__quarter - , subq_0.user__last_login_ts__year - , subq_0.user__last_login_ts__extract_year - , subq_0.user__last_login_ts__extract_quarter - , subq_0.user__last_login_ts__extract_month - , subq_0.user__last_login_ts__extract_day - , subq_0.user__last_login_ts__extract_dow - , subq_0.user__last_login_ts__extract_doy - , subq_0.user__archived_at__hour - , subq_0.user__archived_at__day - , subq_0.user__archived_at__week - , subq_0.user__archived_at__month - , subq_0.user__archived_at__quarter - , subq_0.user__archived_at__year - , subq_0.user__archived_at__extract_year - , subq_0.user__archived_at__extract_quarter - , subq_0.user__archived_at__extract_month - , subq_0.user__archived_at__extract_day - , subq_0.user__archived_at__extract_dow - , subq_0.user__archived_at__extract_doy - , subq_0.archived_at__hour AS metric_time__hour - , subq_0.archived_at__day AS metric_time__day - , subq_0.archived_at__week AS metric_time__week - , subq_0.archived_at__month AS metric_time__month - , subq_0.archived_at__quarter AS metric_time__quarter - , subq_0.archived_at__year AS metric_time__year - , subq_0.archived_at__extract_year AS metric_time__extract_year - , subq_0.archived_at__extract_quarter AS metric_time__extract_quarter - , subq_0.archived_at__extract_month AS metric_time__extract_month - , subq_0.archived_at__extract_day AS metric_time__extract_day - , subq_0.archived_at__extract_dow AS metric_time__extract_dow - , subq_0.archived_at__extract_doy AS metric_time__extract_doy - , subq_0.user - , subq_0.home_state - , subq_0.user__home_state - , subq_0.archived_users + subq_1.ds__day + , subq_1.ds__week + , subq_1.ds__month + , subq_1.ds__quarter + , subq_1.ds__year + , subq_1.ds__extract_year + , subq_1.ds__extract_quarter + , subq_1.ds__extract_month + , subq_1.ds__extract_day + , subq_1.ds__extract_dow + , subq_1.ds__extract_doy + , subq_1.created_at__day + , subq_1.created_at__week + , subq_1.created_at__month + , subq_1.created_at__quarter + , subq_1.created_at__year + , subq_1.created_at__extract_year + , subq_1.created_at__extract_quarter + , subq_1.created_at__extract_month + , subq_1.created_at__extract_day + , subq_1.created_at__extract_dow + , subq_1.created_at__extract_doy + , subq_1.ds_partitioned__day + , subq_1.ds_partitioned__week + , subq_1.ds_partitioned__month + , subq_1.ds_partitioned__quarter + , subq_1.ds_partitioned__year + , subq_1.ds_partitioned__extract_year + , subq_1.ds_partitioned__extract_quarter + , subq_1.ds_partitioned__extract_month + , subq_1.ds_partitioned__extract_day + , subq_1.ds_partitioned__extract_dow + , subq_1.ds_partitioned__extract_doy + , subq_1.last_profile_edit_ts__millisecond + , subq_1.last_profile_edit_ts__second + , subq_1.last_profile_edit_ts__minute + , subq_1.last_profile_edit_ts__hour + , subq_1.last_profile_edit_ts__day + , subq_1.last_profile_edit_ts__week + , subq_1.last_profile_edit_ts__month + , subq_1.last_profile_edit_ts__quarter + , subq_1.last_profile_edit_ts__year + , subq_1.last_profile_edit_ts__extract_year + , subq_1.last_profile_edit_ts__extract_quarter + , subq_1.last_profile_edit_ts__extract_month + , subq_1.last_profile_edit_ts__extract_day + , subq_1.last_profile_edit_ts__extract_dow + , subq_1.last_profile_edit_ts__extract_doy + , subq_1.bio_added_ts__second + , subq_1.bio_added_ts__minute + , subq_1.bio_added_ts__hour + , subq_1.bio_added_ts__day + , subq_1.bio_added_ts__week + , subq_1.bio_added_ts__month + , subq_1.bio_added_ts__quarter + , subq_1.bio_added_ts__year + , subq_1.bio_added_ts__extract_year + , subq_1.bio_added_ts__extract_quarter + , subq_1.bio_added_ts__extract_month + , subq_1.bio_added_ts__extract_day + , subq_1.bio_added_ts__extract_dow + , subq_1.bio_added_ts__extract_doy + , subq_1.last_login_ts__minute + , subq_1.last_login_ts__hour + , subq_1.last_login_ts__day + , subq_1.last_login_ts__week + , subq_1.last_login_ts__month + , subq_1.last_login_ts__quarter + , subq_1.last_login_ts__year + , subq_1.last_login_ts__extract_year + , subq_1.last_login_ts__extract_quarter + , subq_1.last_login_ts__extract_month + , subq_1.last_login_ts__extract_day + , subq_1.last_login_ts__extract_dow + , subq_1.last_login_ts__extract_doy + , subq_1.archived_at__hour + , subq_1.archived_at__day + , subq_1.archived_at__week + , subq_1.archived_at__month + , subq_1.archived_at__quarter + , subq_1.archived_at__year + , subq_1.archived_at__extract_year + , subq_1.archived_at__extract_quarter + , subq_1.archived_at__extract_month + , subq_1.archived_at__extract_day + , subq_1.archived_at__extract_dow + , subq_1.archived_at__extract_doy + , subq_1.user__ds__day + , subq_1.user__ds__week + , subq_1.user__ds__month + , subq_1.user__ds__quarter + , subq_1.user__ds__year + , subq_1.user__ds__extract_year + , subq_1.user__ds__extract_quarter + , subq_1.user__ds__extract_month + , subq_1.user__ds__extract_day + , subq_1.user__ds__extract_dow + , subq_1.user__ds__extract_doy + , subq_1.user__created_at__day + , subq_1.user__created_at__week + , subq_1.user__created_at__month + , subq_1.user__created_at__quarter + , subq_1.user__created_at__year + , subq_1.user__created_at__extract_year + , subq_1.user__created_at__extract_quarter + , subq_1.user__created_at__extract_month + , subq_1.user__created_at__extract_day + , subq_1.user__created_at__extract_dow + , subq_1.user__created_at__extract_doy + , subq_1.user__ds_partitioned__day + , subq_1.user__ds_partitioned__week + , subq_1.user__ds_partitioned__month + , subq_1.user__ds_partitioned__quarter + , subq_1.user__ds_partitioned__year + , subq_1.user__ds_partitioned__extract_year + , subq_1.user__ds_partitioned__extract_quarter + , subq_1.user__ds_partitioned__extract_month + , subq_1.user__ds_partitioned__extract_day + , subq_1.user__ds_partitioned__extract_dow + , subq_1.user__ds_partitioned__extract_doy + , subq_1.user__last_profile_edit_ts__millisecond + , subq_1.user__last_profile_edit_ts__second + , subq_1.user__last_profile_edit_ts__minute + , subq_1.user__last_profile_edit_ts__hour + , subq_1.user__last_profile_edit_ts__day + , subq_1.user__last_profile_edit_ts__week + , subq_1.user__last_profile_edit_ts__month + , subq_1.user__last_profile_edit_ts__quarter + , subq_1.user__last_profile_edit_ts__year + , subq_1.user__last_profile_edit_ts__extract_year + , subq_1.user__last_profile_edit_ts__extract_quarter + , subq_1.user__last_profile_edit_ts__extract_month + , subq_1.user__last_profile_edit_ts__extract_day + , subq_1.user__last_profile_edit_ts__extract_dow + , subq_1.user__last_profile_edit_ts__extract_doy + , subq_1.user__bio_added_ts__second + , subq_1.user__bio_added_ts__minute + , subq_1.user__bio_added_ts__hour + , subq_1.user__bio_added_ts__day + , subq_1.user__bio_added_ts__week + , subq_1.user__bio_added_ts__month + , subq_1.user__bio_added_ts__quarter + , subq_1.user__bio_added_ts__year + , subq_1.user__bio_added_ts__extract_year + , subq_1.user__bio_added_ts__extract_quarter + , subq_1.user__bio_added_ts__extract_month + , subq_1.user__bio_added_ts__extract_day + , subq_1.user__bio_added_ts__extract_dow + , subq_1.user__bio_added_ts__extract_doy + , subq_1.user__last_login_ts__minute + , subq_1.user__last_login_ts__hour + , subq_1.user__last_login_ts__day + , subq_1.user__last_login_ts__week + , subq_1.user__last_login_ts__month + , subq_1.user__last_login_ts__quarter + , subq_1.user__last_login_ts__year + , subq_1.user__last_login_ts__extract_year + , subq_1.user__last_login_ts__extract_quarter + , subq_1.user__last_login_ts__extract_month + , subq_1.user__last_login_ts__extract_day + , subq_1.user__last_login_ts__extract_dow + , subq_1.user__last_login_ts__extract_doy + , subq_1.user__archived_at__hour + , subq_1.user__archived_at__day + , subq_1.user__archived_at__week + , subq_1.user__archived_at__month + , subq_1.user__archived_at__quarter + , subq_1.user__archived_at__year + , subq_1.user__archived_at__extract_year + , subq_1.user__archived_at__extract_quarter + , subq_1.user__archived_at__extract_month + , subq_1.user__archived_at__extract_day + , subq_1.user__archived_at__extract_dow + , subq_1.user__archived_at__extract_doy + , subq_1.archived_at__hour AS metric_time__hour + , subq_1.archived_at__day AS metric_time__day + , subq_1.archived_at__week AS metric_time__week + , subq_1.archived_at__month AS metric_time__month + , subq_1.archived_at__quarter AS metric_time__quarter + , subq_1.archived_at__year AS metric_time__year + , subq_1.archived_at__extract_year AS metric_time__extract_year + , subq_1.archived_at__extract_quarter AS metric_time__extract_quarter + , subq_1.archived_at__extract_month AS metric_time__extract_month + , subq_1.archived_at__extract_day AS metric_time__extract_day + , subq_1.archived_at__extract_dow AS metric_time__extract_dow + , subq_1.archived_at__extract_doy AS metric_time__extract_doy + , subq_1.user + , subq_1.home_state + , subq_1.user__home_state + , subq_1.archived_users FROM ( -- Read Elements From Semantic Model 'users_ds_source' SELECT @@ -650,16 +650,16 @@ FROM ( , EXTRACT(doy FROM users_ds_source_src_28000.archived_at) AS user__archived_at__extract_doy , users_ds_source_src_28000.user_id AS user FROM ***************************.dim_users users_ds_source_src_28000 - ) subq_0 - ) subq_1 - WHERE subq_1.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' - ) subq_2 - ) subq_3 + ) subq_1 + ) subq_2 + WHERE subq_2.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' + ) subq_3 + ) subq_4 GROUP BY - subq_3.metric_time__hour - ) subq_4 + subq_4.metric_time__hour + ) subq_5 ON - subq_8.metric_time__hour = subq_4.metric_time__hour - ) subq_9 - WHERE subq_9.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' -) subq_10 + subq_9.metric_time__hour = subq_5.metric_time__hour + ) subq_10 + WHERE subq_10.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' +) subq_11 diff --git a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0_optimized.sql index eb3a8574ee..4bb62034d3 100644 --- a/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_granularity_date_part_rendering.py/SqlPlan/Trino/test_subdaily_time_constraint_with_metric__plan0_optimized.sql @@ -6,8 +6,8 @@ sql_engine: Trino -- Constrain Time Range to [2020-01-01T02:00:00, 2020-01-01T05:00:00] -- Compute Metrics via Expressions SELECT - subq_19.metric_time__hour AS metric_time__hour - , subq_15.archived_users AS subdaily_join_to_time_spine_metric + subq_20.metric_time__hour AS metric_time__hour + , subq_16.archived_users AS subdaily_join_to_time_spine_metric FROM ( -- Read From Time Spine 'mf_time_spine_hour' -- Change Column Aliases @@ -17,7 +17,7 @@ FROM ( ts AS metric_time__hour FROM ***************************.mf_time_spine_hour time_spine_src_28005 WHERE ts BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' -) subq_19 +) subq_20 LEFT OUTER JOIN ( -- Aggregate Measures SELECT @@ -33,10 +33,10 @@ LEFT OUTER JOIN ( , 1 AS archived_users FROM ***************************.dim_users users_ds_source_src_28000 WHERE DATE_TRUNC('hour', archived_at) BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' - ) subq_14 + ) subq_15 GROUP BY metric_time__hour -) subq_15 +) subq_16 ON - subq_19.metric_time__hour = subq_15.metric_time__hour -WHERE subq_19.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' + subq_20.metric_time__hour = subq_16.metric_time__hour +WHERE subq_20.metric_time__hour BETWEEN timestamp '2020-01-01 02:00:00' AND timestamp '2020-01-01 05:00:00' diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql index c4d5dabf29..f24d652222 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0.sql @@ -6,21 +6,21 @@ sql_engine: BigQuery --- -- Pass Only Elements: ['listing',] SELECT - subq_8.listing + subq_11.listing FROM ( -- Constrain Output with WHERE SELECT - subq_7.listing - , subq_7.lux_listing - , subq_7.listing__lux_listing - , subq_7.listing__bookings + subq_10.listing + , subq_10.lux_listing + , subq_10.listing__lux_listing + , subq_10.listing__bookings FROM ( -- Join Standard Outputs SELECT - subq_6.listing__bookings AS listing__bookings - , subq_0.listing AS listing - , subq_0.lux_listing AS lux_listing - , subq_0.listing__lux_listing AS listing__lux_listing + subq_9.listing__bookings AS listing__bookings + , subq_3.listing AS listing + , subq_3.lux_listing AS lux_listing + , subq_3.listing__lux_listing AS listing__lux_listing FROM ( -- Read Elements From Semantic Model 'lux_listing_mapping' SELECT @@ -28,128 +28,128 @@ FROM ( , lux_listing_mapping_src_28000.lux_listing_id AS lux_listing , lux_listing_mapping_src_28000.lux_listing_id AS listing__lux_listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 - ) subq_0 + ) subq_3 FULL OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_5.listing - , subq_5.listing__bookings + subq_8.listing + , subq_8.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_4.listing - , subq_4.bookings AS listing__bookings + subq_7.listing + , subq_7.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_3.listing - , SUM(subq_3.bookings) AS bookings + subq_6.listing + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_2.listing - , subq_2.bookings + subq_5.listing + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.ds__day AS metric_time__day - , subq_1.ds__week AS metric_time__week - , subq_1.ds__month AS metric_time__month - , subq_1.ds__quarter AS metric_time__quarter - , subq_1.ds__year AS metric_time__year - , subq_1.ds__extract_year AS metric_time__extract_year - , subq_1.ds__extract_quarter AS metric_time__extract_quarter - , subq_1.ds__extract_month AS metric_time__extract_month - , subq_1.ds__extract_day AS metric_time__extract_day - , subq_1.ds__extract_dow AS metric_time__extract_dow - , subq_1.ds__extract_doy AS metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -242,18 +242,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_1 - ) subq_2 - ) subq_3 + ) subq_4 + ) subq_5 + ) subq_6 GROUP BY listing - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_0.listing = subq_6.listing - ) subq_7 + subq_3.listing = subq_9.listing + ) subq_10 WHERE listing__bookings > 2 -) subq_8 +) subq_11 GROUP BY listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql index f291600e60..ef02b13ced 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_distinct_values_query_with_metric_filter__plan0_optimized.sql @@ -11,7 +11,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_15.listing__bookings AS listing__bookings + subq_18.listing__bookings AS listing__bookings , lux_listing_mapping_src_28000.listing_id AS listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 FULL OUTER JOIN ( @@ -29,13 +29,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 + ) subq_15 GROUP BY listing - ) subq_15 + ) subq_18 ON - lux_listing_mapping_src_28000.listing_id = subq_15.listing -) subq_16 + lux_listing_mapping_src_28000.listing_id = subq_18.listing +) subq_19 WHERE listing__bookings > 2 GROUP BY listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql index 27542fa933..b80a4c6029 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql @@ -6,320 +6,320 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.guest__booking_value - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.guest__booking_value + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.guest__booking_value AS guest__booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.guest__booking_value AS guest__booking_value + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['guest', 'guest__booking_value'] SELECT - subq_6.guest - , subq_6.guest__booking_value + subq_8.guest + , subq_8.guest__booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_5.guest - , subq_5.booking_value AS guest__booking_value + subq_7.guest + , subq_7.booking_value AS guest__booking_value FROM ( -- Aggregate Measures SELECT - subq_4.guest - , SUM(subq_4.booking_value) AS booking_value + subq_6.guest + , SUM(subq_6.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'guest'] SELECT - subq_3.guest - , subq_3.booking_value + subq_5.guest + , subq_5.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY guest - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.guest = subq_7.guest - ) subq_8 + subq_4.guest = subq_9.guest + ) subq_10 WHERE guest__booking_value > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql index b60464c79d..8b23aa41e6 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql @@ -23,15 +23,16 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.guest__booking_value AS guest__booking_value - , subq_13.bookers AS bookers + subq_20.guest__booking_value AS guest__booking_value + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT guest + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['booking_value', 'guest'] @@ -44,8 +45,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY guest - ) subq_18 + ) subq_20 ON - subq_13.guest = subq_18.guest -) subq_19 + subq_15.guest = subq_20.guest +) subq_21 WHERE guest__booking_value > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0.sql index 7634a0930b..25bf9ff4f0 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0.sql @@ -4,227 +4,227 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_22.listings + subq_33.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_21.listings) AS listings + SUM(subq_32.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_20.listings + subq_31.listings FROM ( -- Constrain Output with WHERE SELECT - subq_19.ds__day - , subq_19.ds__week - , subq_19.ds__month - , subq_19.ds__quarter - , subq_19.ds__year - , subq_19.ds__extract_year - , subq_19.ds__extract_quarter - , subq_19.ds__extract_month - , subq_19.ds__extract_day - , subq_19.ds__extract_dow - , subq_19.ds__extract_doy - , subq_19.created_at__day - , subq_19.created_at__week - , subq_19.created_at__month - , subq_19.created_at__quarter - , subq_19.created_at__year - , subq_19.created_at__extract_year - , subq_19.created_at__extract_quarter - , subq_19.created_at__extract_month - , subq_19.created_at__extract_day - , subq_19.created_at__extract_dow - , subq_19.created_at__extract_doy - , subq_19.listing__ds__day - , subq_19.listing__ds__week - , subq_19.listing__ds__month - , subq_19.listing__ds__quarter - , subq_19.listing__ds__year - , subq_19.listing__ds__extract_year - , subq_19.listing__ds__extract_quarter - , subq_19.listing__ds__extract_month - , subq_19.listing__ds__extract_day - , subq_19.listing__ds__extract_dow - , subq_19.listing__ds__extract_doy - , subq_19.listing__created_at__day - , subq_19.listing__created_at__week - , subq_19.listing__created_at__month - , subq_19.listing__created_at__quarter - , subq_19.listing__created_at__year - , subq_19.listing__created_at__extract_year - , subq_19.listing__created_at__extract_quarter - , subq_19.listing__created_at__extract_month - , subq_19.listing__created_at__extract_day - , subq_19.listing__created_at__extract_dow - , subq_19.listing__created_at__extract_doy - , subq_19.metric_time__day - , subq_19.metric_time__week - , subq_19.metric_time__month - , subq_19.metric_time__quarter - , subq_19.metric_time__year - , subq_19.metric_time__extract_year - , subq_19.metric_time__extract_quarter - , subq_19.metric_time__extract_month - , subq_19.metric_time__extract_day - , subq_19.metric_time__extract_dow - , subq_19.metric_time__extract_doy - , subq_19.listing - , subq_19.user - , subq_19.listing__user - , subq_19.country_latest - , subq_19.is_lux_latest - , subq_19.capacity_latest - , subq_19.listing__country_latest - , subq_19.listing__is_lux_latest - , subq_19.listing__capacity_latest - , subq_19.user__visit_buy_conversion_rate - , subq_19.listings - , subq_19.largest_listing - , subq_19.smallest_listing + subq_30.ds__day + , subq_30.ds__week + , subq_30.ds__month + , subq_30.ds__quarter + , subq_30.ds__year + , subq_30.ds__extract_year + , subq_30.ds__extract_quarter + , subq_30.ds__extract_month + , subq_30.ds__extract_day + , subq_30.ds__extract_dow + , subq_30.ds__extract_doy + , subq_30.created_at__day + , subq_30.created_at__week + , subq_30.created_at__month + , subq_30.created_at__quarter + , subq_30.created_at__year + , subq_30.created_at__extract_year + , subq_30.created_at__extract_quarter + , subq_30.created_at__extract_month + , subq_30.created_at__extract_day + , subq_30.created_at__extract_dow + , subq_30.created_at__extract_doy + , subq_30.listing__ds__day + , subq_30.listing__ds__week + , subq_30.listing__ds__month + , subq_30.listing__ds__quarter + , subq_30.listing__ds__year + , subq_30.listing__ds__extract_year + , subq_30.listing__ds__extract_quarter + , subq_30.listing__ds__extract_month + , subq_30.listing__ds__extract_day + , subq_30.listing__ds__extract_dow + , subq_30.listing__ds__extract_doy + , subq_30.listing__created_at__day + , subq_30.listing__created_at__week + , subq_30.listing__created_at__month + , subq_30.listing__created_at__quarter + , subq_30.listing__created_at__year + , subq_30.listing__created_at__extract_year + , subq_30.listing__created_at__extract_quarter + , subq_30.listing__created_at__extract_month + , subq_30.listing__created_at__extract_day + , subq_30.listing__created_at__extract_dow + , subq_30.listing__created_at__extract_doy + , subq_30.metric_time__day + , subq_30.metric_time__week + , subq_30.metric_time__month + , subq_30.metric_time__quarter + , subq_30.metric_time__year + , subq_30.metric_time__extract_year + , subq_30.metric_time__extract_quarter + , subq_30.metric_time__extract_month + , subq_30.metric_time__extract_day + , subq_30.metric_time__extract_dow + , subq_30.metric_time__extract_doy + , subq_30.listing + , subq_30.user + , subq_30.listing__user + , subq_30.country_latest + , subq_30.is_lux_latest + , subq_30.capacity_latest + , subq_30.listing__country_latest + , subq_30.listing__is_lux_latest + , subq_30.listing__capacity_latest + , subq_30.user__visit_buy_conversion_rate + , subq_30.listings + , subq_30.largest_listing + , subq_30.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_18.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_29.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.created_at__day AS created_at__day + , subq_13.created_at__week AS created_at__week + , subq_13.created_at__month AS created_at__month + , subq_13.created_at__quarter AS created_at__quarter + , subq_13.created_at__year AS created_at__year + , subq_13.created_at__extract_year AS created_at__extract_year + , subq_13.created_at__extract_quarter AS created_at__extract_quarter + , subq_13.created_at__extract_month AS created_at__extract_month + , subq_13.created_at__extract_day AS created_at__extract_day + , subq_13.created_at__extract_dow AS created_at__extract_dow + , subq_13.created_at__extract_doy AS created_at__extract_doy + , subq_13.listing__ds__day AS listing__ds__day + , subq_13.listing__ds__week AS listing__ds__week + , subq_13.listing__ds__month AS listing__ds__month + , subq_13.listing__ds__quarter AS listing__ds__quarter + , subq_13.listing__ds__year AS listing__ds__year + , subq_13.listing__ds__extract_year AS listing__ds__extract_year + , subq_13.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_13.listing__ds__extract_month AS listing__ds__extract_month + , subq_13.listing__ds__extract_day AS listing__ds__extract_day + , subq_13.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_13.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_13.listing__created_at__day AS listing__created_at__day + , subq_13.listing__created_at__week AS listing__created_at__week + , subq_13.listing__created_at__month AS listing__created_at__month + , subq_13.listing__created_at__quarter AS listing__created_at__quarter + , subq_13.listing__created_at__year AS listing__created_at__year + , subq_13.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_13.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_13.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_13.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_13.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_13.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.user AS user + , subq_13.listing__user AS listing__user + , subq_13.country_latest AS country_latest + , subq_13.is_lux_latest AS is_lux_latest + , subq_13.capacity_latest AS capacity_latest + , subq_13.listing__country_latest AS listing__country_latest + , subq_13.listing__is_lux_latest AS listing__is_lux_latest + , subq_13.listing__capacity_latest AS listing__capacity_latest + , subq_13.listings AS listings + , subq_13.largest_listing AS largest_listing + , subq_13.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.created_at__day + , subq_12.created_at__week + , subq_12.created_at__month + , subq_12.created_at__quarter + , subq_12.created_at__year + , subq_12.created_at__extract_year + , subq_12.created_at__extract_quarter + , subq_12.created_at__extract_month + , subq_12.created_at__extract_day + , subq_12.created_at__extract_dow + , subq_12.created_at__extract_doy + , subq_12.listing__ds__day + , subq_12.listing__ds__week + , subq_12.listing__ds__month + , subq_12.listing__ds__quarter + , subq_12.listing__ds__year + , subq_12.listing__ds__extract_year + , subq_12.listing__ds__extract_quarter + , subq_12.listing__ds__extract_month + , subq_12.listing__ds__extract_day + , subq_12.listing__ds__extract_dow + , subq_12.listing__ds__extract_doy + , subq_12.listing__created_at__day + , subq_12.listing__created_at__week + , subq_12.listing__created_at__month + , subq_12.listing__created_at__quarter + , subq_12.listing__created_at__year + , subq_12.listing__created_at__extract_year + , subq_12.listing__created_at__extract_quarter + , subq_12.listing__created_at__extract_month + , subq_12.listing__created_at__extract_day + , subq_12.listing__created_at__extract_dow + , subq_12.listing__created_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.user + , subq_12.listing__user + , subq_12.country_latest + , subq_12.is_lux_latest + , subq_12.capacity_latest + , subq_12.listing__country_latest + , subq_12.listing__is_lux_latest + , subq_12.listing__capacity_latest + , subq_12.listings + , subq_12.largest_listing + , subq_12.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -285,78 +285,78 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__visit_buy_conversion_rate'] SELECT - subq_17.user - , subq_17.user__visit_buy_conversion_rate + subq_28.user + , subq_28.user__visit_buy_conversion_rate FROM ( -- Compute Metrics via Expressions SELECT - subq_16.user - , CAST(subq_16.buys AS FLOAT64) / CAST(NULLIF(subq_16.visits, 0) AS FLOAT64) AS user__visit_buy_conversion_rate + subq_27.user + , CAST(subq_27.buys AS FLOAT64) / CAST(NULLIF(subq_27.visits, 0) AS FLOAT64) AS user__visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.user, subq_15.user) AS user - , MAX(subq_5.visits) AS visits - , MAX(subq_15.buys) AS buys + COALESCE(subq_17.user, subq_26.user) AS user + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.visits) AS visits + subq_16.user + , SUM(subq_16.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'user'] SELECT - subq_3.user - , subq_3.visits + subq_15.user + , subq_15.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -391,108 +391,108 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_14 + ) subq_15 + ) subq_16 GROUP BY user - ) subq_5 + ) subq_17 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.user - , SUM(subq_14.buys) AS buys + subq_25.user + , SUM(subq_25.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'user'] SELECT - subq_13.user - , subq_13.buys + subq_24.user + , subq_24.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_23.metric_time__day + , subq_23.user + , subq_23.buys + , subq_23.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_19.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_19.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_19.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_18.metric_time__day + , subq_18.user + , subq_18.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -527,118 +527,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_14 + ) subq_18 + ) subq_19 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_21.ds__day + , subq_21.ds__week + , subq_21.ds__month + , subq_21.ds__quarter + , subq_21.ds__year + , subq_21.ds__extract_year + , subq_21.ds__extract_quarter + , subq_21.ds__extract_month + , subq_21.ds__extract_day + , subq_21.ds__extract_dow + , subq_21.ds__extract_doy + , subq_21.ds_month__month + , subq_21.ds_month__quarter + , subq_21.ds_month__year + , subq_21.ds_month__extract_year + , subq_21.ds_month__extract_quarter + , subq_21.ds_month__extract_month + , subq_21.buy__ds__day + , subq_21.buy__ds__week + , subq_21.buy__ds__month + , subq_21.buy__ds__quarter + , subq_21.buy__ds__year + , subq_21.buy__ds__extract_year + , subq_21.buy__ds__extract_quarter + , subq_21.buy__ds__extract_month + , subq_21.buy__ds__extract_day + , subq_21.buy__ds__extract_dow + , subq_21.buy__ds__extract_doy + , subq_21.buy__ds_month__month + , subq_21.buy__ds_month__quarter + , subq_21.buy__ds_month__year + , subq_21.buy__ds_month__extract_year + , subq_21.buy__ds_month__extract_quarter + , subq_21.buy__ds_month__extract_month + , subq_21.metric_time__day + , subq_21.metric_time__week + , subq_21.metric_time__month + , subq_21.metric_time__quarter + , subq_21.metric_time__year + , subq_21.metric_time__extract_year + , subq_21.metric_time__extract_quarter + , subq_21.metric_time__extract_month + , subq_21.metric_time__extract_day + , subq_21.metric_time__extract_dow + , subq_21.metric_time__extract_doy + , subq_21.user + , subq_21.session_id + , subq_21.buy__user + , subq_21.buy__session_id + , subq_21.buys + , subq_21.buyers , GENERATE_UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_20.ds__day + , subq_20.ds__week + , subq_20.ds__month + , subq_20.ds__quarter + , subq_20.ds__year + , subq_20.ds__extract_year + , subq_20.ds__extract_quarter + , subq_20.ds__extract_month + , subq_20.ds__extract_day + , subq_20.ds__extract_dow + , subq_20.ds__extract_doy + , subq_20.ds_month__month + , subq_20.ds_month__quarter + , subq_20.ds_month__year + , subq_20.ds_month__extract_year + , subq_20.ds_month__extract_quarter + , subq_20.ds_month__extract_month + , subq_20.buy__ds__day + , subq_20.buy__ds__week + , subq_20.buy__ds__month + , subq_20.buy__ds__quarter + , subq_20.buy__ds__year + , subq_20.buy__ds__extract_year + , subq_20.buy__ds__extract_quarter + , subq_20.buy__ds__extract_month + , subq_20.buy__ds__extract_day + , subq_20.buy__ds__extract_dow + , subq_20.buy__ds__extract_doy + , subq_20.buy__ds_month__month + , subq_20.buy__ds_month__quarter + , subq_20.buy__ds_month__year + , subq_20.buy__ds_month__extract_year + , subq_20.buy__ds_month__extract_quarter + , subq_20.buy__ds_month__extract_month + , subq_20.ds__day AS metric_time__day + , subq_20.ds__week AS metric_time__week + , subq_20.ds__month AS metric_time__month + , subq_20.ds__quarter AS metric_time__quarter + , subq_20.ds__year AS metric_time__year + , subq_20.ds__extract_year AS metric_time__extract_year + , subq_20.ds__extract_quarter AS metric_time__extract_quarter + , subq_20.ds__extract_month AS metric_time__extract_month + , subq_20.ds__extract_day AS metric_time__extract_day + , subq_20.ds__extract_dow AS metric_time__extract_dow + , subq_20.ds__extract_doy AS metric_time__extract_doy + , subq_20.user + , subq_20.session_id + , subq_20.buy__user + , subq_20.buy__session_id + , subq_20.buys + , subq_20.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -684,32 +684,32 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_20 + ) subq_21 + ) subq_22 ON ( - subq_8.user = subq_11.user + subq_19.user = subq_22.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_19.metric_time__day <= subq_22.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_23 + ) subq_24 + ) subq_25 GROUP BY user - ) subq_15 + ) subq_26 ON - subq_5.user = subq_15.user + subq_17.user = subq_26.user GROUP BY user - ) subq_16 - ) subq_17 - ) subq_18 + ) subq_27 + ) subq_28 + ) subq_29 ON - subq_1.user = subq_18.user - ) subq_19 + subq_13.user = subq_29.user + ) subq_30 WHERE user__visit_buy_conversion_rate > 2 - ) subq_20 - ) subq_21 -) subq_22 + ) subq_31 + ) subq_32 +) subq_33 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0_optimized.sql index 3fb8e28003..f2ff5102df 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_filter_with_conversion_metric__plan0_optimized.sql @@ -21,8 +21,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - CAST(subq_38.buys AS FLOAT64) / CAST(NULLIF(subq_38.visits, 0) AS FLOAT64) AS user__visit_buy_conversion_rate - , subq_24.listings AS listings + CAST(subq_49.buys AS FLOAT64) / CAST(NULLIF(subq_49.visits, 0) AS FLOAT64) AS user__visit_buy_conversion_rate + , subq_35.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -30,13 +30,13 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_24 + ) subq_35 LEFT OUTER JOIN ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.user, subq_37.user) AS user - , MAX(subq_28.visits) AS visits - , MAX(subq_37.buys) AS buys + COALESCE(subq_39.user, subq_48.user) AS user + , MAX(subq_39.visits) AS visits + , MAX(subq_48.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'user'] @@ -47,43 +47,43 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY user - ) subq_28 + ) subq_39 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'user'] -- Aggregate Measures SELECT - subq_34.user + subq_45.user , SUM(buys) AS buys FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_33.mf_internal_uuid AS mf_internal_uuid - , subq_33.buys AS buys + , subq_44.mf_internal_uuid AS mf_internal_uuid + , subq_44.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -95,23 +95,23 @@ FROM ( , 1 AS buys , GENERATE_UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_33 + ) subq_44 ON ( - sma_28019_cte.user = subq_33.user + sma_28019_cte.user = subq_44.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_33.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_44.metric_time__day) ) - ) subq_34 + ) subq_45 GROUP BY user - ) subq_37 + ) subq_48 ON - subq_28.user = subq_37.user + subq_39.user = subq_48.user GROUP BY user - ) subq_38 + ) subq_49 ON - subq_24.user = subq_38.user -) subq_41 + subq_35.user = subq_49.user +) subq_52 WHERE user__visit_buy_conversion_rate > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0.sql index 231820dc2a..8320341cff 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0.sql @@ -4,229 +4,229 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_15.listings + subq_20.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_14.listings) AS listings + SUM(subq_19.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_13.listings + subq_18.listings FROM ( -- Constrain Output with WHERE SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.user__listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.user__listing__user__average_booking_value - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.listing__ds__day + , subq_17.listing__ds__week + , subq_17.listing__ds__month + , subq_17.listing__ds__quarter + , subq_17.listing__ds__year + , subq_17.listing__ds__extract_year + , subq_17.listing__ds__extract_quarter + , subq_17.listing__ds__extract_month + , subq_17.listing__ds__extract_day + , subq_17.listing__ds__extract_dow + , subq_17.listing__ds__extract_doy + , subq_17.listing__created_at__day + , subq_17.listing__created_at__week + , subq_17.listing__created_at__month + , subq_17.listing__created_at__quarter + , subq_17.listing__created_at__year + , subq_17.listing__created_at__extract_year + , subq_17.listing__created_at__extract_quarter + , subq_17.listing__created_at__extract_month + , subq_17.listing__created_at__extract_day + , subq_17.listing__created_at__extract_dow + , subq_17.listing__created_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.listing + , subq_17.user + , subq_17.listing__user + , subq_17.user__listing__user + , subq_17.country_latest + , subq_17.is_lux_latest + , subq_17.capacity_latest + , subq_17.listing__country_latest + , subq_17.listing__is_lux_latest + , subq_17.listing__capacity_latest + , subq_17.user__listing__user__average_booking_value + , subq_17.listings + , subq_17.largest_listing + , subq_17.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_11.listing__user AS user__listing__user - , subq_11.listing__user__average_booking_value AS user__listing__user__average_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_16.listing__user AS user__listing__user + , subq_16.listing__user__average_booking_value AS user__listing__user__average_booking_value + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,231 +287,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing__user', 'listing__user__average_booking_value'] SELECT - subq_10.listing__user - , subq_10.listing__user__average_booking_value + subq_15.listing__user + , subq_15.listing__user__average_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_9.listing__user - , subq_9.average_booking_value AS listing__user__average_booking_value + subq_14.listing__user + , subq_14.average_booking_value AS listing__user__average_booking_value FROM ( -- Aggregate Measures SELECT - subq_8.listing__user - , AVG(subq_8.average_booking_value) AS average_booking_value + subq_13.listing__user + , AVG(subq_13.average_booking_value) AS average_booking_value FROM ( -- Pass Only Elements: ['average_booking_value', 'listing__user'] SELECT - subq_7.listing__user - , subq_7.average_booking_value + subq_12.listing__user + , subq_12.average_booking_value FROM ( -- Join Standard Outputs SELECT - subq_6.user AS listing__user - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.paid_at__day AS paid_at__day - , subq_3.paid_at__week AS paid_at__week - , subq_3.paid_at__month AS paid_at__month - , subq_3.paid_at__quarter AS paid_at__quarter - , subq_3.paid_at__year AS paid_at__year - , subq_3.paid_at__extract_year AS paid_at__extract_year - , subq_3.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_3.paid_at__extract_month AS paid_at__extract_month - , subq_3.paid_at__extract_day AS paid_at__extract_day - , subq_3.paid_at__extract_dow AS paid_at__extract_dow - , subq_3.paid_at__extract_doy AS paid_at__extract_doy - , subq_3.booking__ds__day AS booking__ds__day - , subq_3.booking__ds__week AS booking__ds__week - , subq_3.booking__ds__month AS booking__ds__month - , subq_3.booking__ds__quarter AS booking__ds__quarter - , subq_3.booking__ds__year AS booking__ds__year - , subq_3.booking__ds__extract_year AS booking__ds__extract_year - , subq_3.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_3.booking__ds__extract_month AS booking__ds__extract_month - , subq_3.booking__ds__extract_day AS booking__ds__extract_day - , subq_3.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_3.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_3.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_3.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_3.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_3.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_3.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_3.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_3.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_3.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_3.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_3.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_3.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_3.booking__paid_at__day AS booking__paid_at__day - , subq_3.booking__paid_at__week AS booking__paid_at__week - , subq_3.booking__paid_at__month AS booking__paid_at__month - , subq_3.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_3.booking__paid_at__year AS booking__paid_at__year - , subq_3.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_3.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_3.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_3.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_3.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_3.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.guest AS guest - , subq_3.host AS host - , subq_3.booking__listing AS booking__listing - , subq_3.booking__guest AS booking__guest - , subq_3.booking__host AS booking__host - , subq_3.is_instant AS is_instant - , subq_3.booking__is_instant AS booking__is_instant - , subq_3.bookings AS bookings - , subq_3.instant_bookings AS instant_bookings - , subq_3.booking_value AS booking_value - , subq_3.max_booking_value AS max_booking_value - , subq_3.min_booking_value AS min_booking_value - , subq_3.bookers AS bookers - , subq_3.average_booking_value AS average_booking_value - , subq_3.referred_bookings AS referred_bookings - , subq_3.median_booking_value AS median_booking_value - , subq_3.booking_value_p99 AS booking_value_p99 - , subq_3.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_3.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_3.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.user AS listing__user + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__day AS metric_time__day + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -604,83 +604,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'user'] SELECT - subq_5.listing - , subq_5.user + subq_10.listing + , subq_10.user FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.listing__ds__day - , subq_4.listing__ds__week - , subq_4.listing__ds__month - , subq_4.listing__ds__quarter - , subq_4.listing__ds__year - , subq_4.listing__ds__extract_year - , subq_4.listing__ds__extract_quarter - , subq_4.listing__ds__extract_month - , subq_4.listing__ds__extract_day - , subq_4.listing__ds__extract_dow - , subq_4.listing__ds__extract_doy - , subq_4.listing__created_at__day - , subq_4.listing__created_at__week - , subq_4.listing__created_at__month - , subq_4.listing__created_at__quarter - , subq_4.listing__created_at__year - , subq_4.listing__created_at__extract_year - , subq_4.listing__created_at__extract_quarter - , subq_4.listing__created_at__extract_month - , subq_4.listing__created_at__extract_day - , subq_4.listing__created_at__extract_dow - , subq_4.listing__created_at__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.listing - , subq_4.user - , subq_4.listing__user - , subq_4.country_latest - , subq_4.is_lux_latest - , subq_4.capacity_latest - , subq_4.listing__country_latest - , subq_4.listing__is_lux_latest - , subq_4.listing__capacity_latest - , subq_4.listings - , subq_4.largest_listing - , subq_4.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -741,22 +741,22 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_6 + ) subq_10 + ) subq_11 ON - subq_3.listing = subq_6.listing - ) subq_7 - ) subq_8 + subq_9.listing = subq_11.listing + ) subq_12 + ) subq_13 GROUP BY listing__user - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_14 + ) subq_15 + ) subq_16 ON - subq_1.user = subq_11.listing__user - ) subq_12 + subq_7.user = subq_16.listing__user + ) subq_17 WHERE user__listing__user__average_booking_value > 1 - ) subq_13 - ) subq_14 -) subq_15 + ) subq_18 + ) subq_19 +) subq_20 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0_optimized.sql index 4475f9a602..b3ed362b02 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_group_by_has_local_entity_prefix__plan0_optimized.sql @@ -21,7 +21,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_26.listing__user__average_booking_value AS user__listing__user__average_booking_value + subq_31.listing__user__average_booking_value AS user__listing__user__average_booking_value , sma_28014_cte.listings AS listings FROM sma_28014_cte sma_28014_cte LEFT OUTER JOIN ( @@ -40,8 +40,8 @@ FROM ( bookings_source_src_28000.listing_id = sma_28014_cte.listing GROUP BY listing__user - ) subq_26 + ) subq_31 ON - sma_28014_cte.user = subq_26.listing__user -) subq_27 + sma_28014_cte.user = subq_31.listing__user +) subq_32 WHERE user__listing__user__average_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0.sql index 55fda318d3..bb82456479 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_19.third_hop_count + subq_28.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_18.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_27.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_17.third_hop_count + subq_26.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_16.third_hop_ds__day - , subq_16.third_hop_ds__week - , subq_16.third_hop_ds__month - , subq_16.third_hop_ds__quarter - , subq_16.third_hop_ds__year - , subq_16.third_hop_ds__extract_year - , subq_16.third_hop_ds__extract_quarter - , subq_16.third_hop_ds__extract_month - , subq_16.third_hop_ds__extract_day - , subq_16.third_hop_ds__extract_dow - , subq_16.third_hop_ds__extract_doy - , subq_16.customer_third_hop_id__third_hop_ds__day - , subq_16.customer_third_hop_id__third_hop_ds__week - , subq_16.customer_third_hop_id__third_hop_ds__month - , subq_16.customer_third_hop_id__third_hop_ds__quarter - , subq_16.customer_third_hop_id__third_hop_ds__year - , subq_16.customer_third_hop_id__third_hop_ds__extract_year - , subq_16.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_16.customer_third_hop_id__third_hop_ds__extract_month - , subq_16.customer_third_hop_id__third_hop_ds__extract_day - , subq_16.customer_third_hop_id__third_hop_ds__extract_dow - , subq_16.customer_third_hop_id__third_hop_ds__extract_doy - , subq_16.metric_time__day - , subq_16.metric_time__week - , subq_16.metric_time__month - , subq_16.metric_time__quarter - , subq_16.metric_time__year - , subq_16.metric_time__extract_year - , subq_16.metric_time__extract_quarter - , subq_16.metric_time__extract_month - , subq_16.metric_time__extract_day - , subq_16.metric_time__extract_dow - , subq_16.metric_time__extract_doy - , subq_16.customer_third_hop_id - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_16.value - , subq_16.customer_third_hop_id__value - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_16.third_hop_count + subq_25.third_hop_ds__day + , subq_25.third_hop_ds__week + , subq_25.third_hop_ds__month + , subq_25.third_hop_ds__quarter + , subq_25.third_hop_ds__year + , subq_25.third_hop_ds__extract_year + , subq_25.third_hop_ds__extract_quarter + , subq_25.third_hop_ds__extract_month + , subq_25.third_hop_ds__extract_day + , subq_25.third_hop_ds__extract_dow + , subq_25.third_hop_ds__extract_doy + , subq_25.customer_third_hop_id__third_hop_ds__day + , subq_25.customer_third_hop_id__third_hop_ds__week + , subq_25.customer_third_hop_id__third_hop_ds__month + , subq_25.customer_third_hop_id__third_hop_ds__quarter + , subq_25.customer_third_hop_id__third_hop_ds__year + , subq_25.customer_third_hop_id__third_hop_ds__extract_year + , subq_25.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_25.customer_third_hop_id__third_hop_ds__extract_month + , subq_25.customer_third_hop_id__third_hop_ds__extract_day + , subq_25.customer_third_hop_id__third_hop_ds__extract_dow + , subq_25.customer_third_hop_id__third_hop_ds__extract_doy + , subq_25.metric_time__day + , subq_25.metric_time__week + , subq_25.metric_time__month + , subq_25.metric_time__quarter + , subq_25.metric_time__year + , subq_25.metric_time__extract_year + , subq_25.metric_time__extract_quarter + , subq_25.metric_time__extract_month + , subq_25.metric_time__extract_day + , subq_25.metric_time__extract_dow + , subq_25.metric_time__extract_doy + , subq_25.customer_third_hop_id + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_25.value + , subq_25.customer_third_hop_id__value + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_25.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_15.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_15.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_24.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_24.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_10.third_hop_ds__day AS third_hop_ds__day + , subq_10.third_hop_ds__week AS third_hop_ds__week + , subq_10.third_hop_ds__month AS third_hop_ds__month + , subq_10.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_10.third_hop_ds__year AS third_hop_ds__year + , subq_10.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_10.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_10.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_10.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_10.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_10.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_10.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_10.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_10.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_10.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_10.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_10.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_10.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_10.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_10.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_10.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_10.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.customer_third_hop_id AS customer_third_hop_id + , subq_10.value AS value + , subq_10.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_10.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_9.third_hop_ds__day + , subq_9.third_hop_ds__week + , subq_9.third_hop_ds__month + , subq_9.third_hop_ds__quarter + , subq_9.third_hop_ds__year + , subq_9.third_hop_ds__extract_year + , subq_9.third_hop_ds__extract_quarter + , subq_9.third_hop_ds__extract_month + , subq_9.third_hop_ds__extract_day + , subq_9.third_hop_ds__extract_dow + , subq_9.third_hop_ds__extract_doy + , subq_9.customer_third_hop_id__third_hop_ds__day + , subq_9.customer_third_hop_id__third_hop_ds__week + , subq_9.customer_third_hop_id__third_hop_ds__month + , subq_9.customer_third_hop_id__third_hop_ds__quarter + , subq_9.customer_third_hop_id__third_hop_ds__year + , subq_9.customer_third_hop_id__third_hop_ds__extract_year + , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_9.customer_third_hop_id__third_hop_ds__extract_month + , subq_9.customer_third_hop_id__third_hop_ds__extract_day + , subq_9.customer_third_hop_id__third_hop_ds__extract_dow + , subq_9.customer_third_hop_id__third_hop_ds__extract_doy + , subq_9.third_hop_ds__day AS metric_time__day + , subq_9.third_hop_ds__week AS metric_time__week + , subq_9.third_hop_ds__month AS metric_time__month + , subq_9.third_hop_ds__quarter AS metric_time__quarter + , subq_9.third_hop_ds__year AS metric_time__year + , subq_9.third_hop_ds__extract_year AS metric_time__extract_year + , subq_9.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_9.third_hop_ds__extract_month AS metric_time__extract_month + , subq_9.third_hop_ds__extract_day AS metric_time__extract_day + , subq_9.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_9.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_9.customer_third_hop_id + , subq_9.value + , subq_9.customer_third_hop_id__value + , subq_9.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,154 +169,154 @@ FROM ( , EXTRACT(dayofyear FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_14.account_id__customer_id__customer_third_hop_id - , subq_14.account_id__customer_id__customer_third_hop_id__txn_count + subq_23.account_id__customer_id__customer_third_hop_id + , subq_23.account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Compute Metrics via Expressions SELECT - subq_13.account_id__customer_id__customer_third_hop_id - , subq_13.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count + subq_22.account_id__customer_id__customer_third_hop_id + , subq_22.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Aggregate Measures SELECT - subq_12.account_id__customer_id__customer_third_hop_id - , SUM(subq_12.txn_count) AS txn_count + subq_21.account_id__customer_id__customer_third_hop_id + , SUM(subq_21.txn_count) AS txn_count FROM ( -- Pass Only Elements: ['txn_count', 'account_id__customer_id__customer_third_hop_id'] SELECT - subq_11.account_id__customer_id__customer_third_hop_id - , subq_11.txn_count + subq_20.account_id__customer_id__customer_third_hop_id + , subq_20.txn_count FROM ( -- Join Standard Outputs SELECT - subq_10.ds_partitioned__day AS account_id__ds_partitioned__day - , subq_10.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_3.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_3.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_3.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_3.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_3.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_3.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_3.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_3.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_3.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_3.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_3.account_id__ds__day AS account_id__ds__day - , subq_3.account_id__ds__week AS account_id__ds__week - , subq_3.account_id__ds__month AS account_id__ds__month - , subq_3.account_id__ds__quarter AS account_id__ds__quarter - , subq_3.account_id__ds__year AS account_id__ds__year - , subq_3.account_id__ds__extract_year AS account_id__ds__extract_year - , subq_3.account_id__ds__extract_quarter AS account_id__ds__extract_quarter - , subq_3.account_id__ds__extract_month AS account_id__ds__extract_month - , subq_3.account_id__ds__extract_day AS account_id__ds__extract_day - , subq_3.account_id__ds__extract_dow AS account_id__ds__extract_dow - , subq_3.account_id__ds__extract_doy AS account_id__ds__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.account_id AS account_id - , subq_3.account_month AS account_month - , subq_3.account_id__account_month AS account_id__account_month - , subq_3.txn_count AS txn_count + subq_19.ds_partitioned__day AS account_id__ds_partitioned__day + , subq_19.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + , subq_12.ds_partitioned__day AS ds_partitioned__day + , subq_12.ds_partitioned__week AS ds_partitioned__week + , subq_12.ds_partitioned__month AS ds_partitioned__month + , subq_12.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_12.ds_partitioned__year AS ds_partitioned__year + , subq_12.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_12.ds__day AS ds__day + , subq_12.ds__week AS ds__week + , subq_12.ds__month AS ds__month + , subq_12.ds__quarter AS ds__quarter + , subq_12.ds__year AS ds__year + , subq_12.ds__extract_year AS ds__extract_year + , subq_12.ds__extract_quarter AS ds__extract_quarter + , subq_12.ds__extract_month AS ds__extract_month + , subq_12.ds__extract_day AS ds__extract_day + , subq_12.ds__extract_dow AS ds__extract_dow + , subq_12.ds__extract_doy AS ds__extract_doy + , subq_12.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_12.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_12.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_12.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_12.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_12.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_12.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_12.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_12.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_12.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_12.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_12.account_id__ds__day AS account_id__ds__day + , subq_12.account_id__ds__week AS account_id__ds__week + , subq_12.account_id__ds__month AS account_id__ds__month + , subq_12.account_id__ds__quarter AS account_id__ds__quarter + , subq_12.account_id__ds__year AS account_id__ds__year + , subq_12.account_id__ds__extract_year AS account_id__ds__extract_year + , subq_12.account_id__ds__extract_quarter AS account_id__ds__extract_quarter + , subq_12.account_id__ds__extract_month AS account_id__ds__extract_month + , subq_12.account_id__ds__extract_day AS account_id__ds__extract_day + , subq_12.account_id__ds__extract_dow AS account_id__ds__extract_dow + , subq_12.account_id__ds__extract_doy AS account_id__ds__extract_doy + , subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__week AS metric_time__week + , subq_12.metric_time__month AS metric_time__month + , subq_12.metric_time__quarter AS metric_time__quarter + , subq_12.metric_time__year AS metric_time__year + , subq_12.metric_time__extract_year AS metric_time__extract_year + , subq_12.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_12.metric_time__extract_month AS metric_time__extract_month + , subq_12.metric_time__extract_day AS metric_time__extract_day + , subq_12.metric_time__extract_dow AS metric_time__extract_dow + , subq_12.metric_time__extract_doy AS metric_time__extract_doy + , subq_12.account_id AS account_id + , subq_12.account_month AS account_month + , subq_12.account_id__account_month AS account_id__account_month + , subq_12.txn_count AS txn_count FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.account_id__ds_partitioned__day - , subq_2.account_id__ds_partitioned__week - , subq_2.account_id__ds_partitioned__month - , subq_2.account_id__ds_partitioned__quarter - , subq_2.account_id__ds_partitioned__year - , subq_2.account_id__ds_partitioned__extract_year - , subq_2.account_id__ds_partitioned__extract_quarter - , subq_2.account_id__ds_partitioned__extract_month - , subq_2.account_id__ds_partitioned__extract_day - , subq_2.account_id__ds_partitioned__extract_dow - , subq_2.account_id__ds_partitioned__extract_doy - , subq_2.account_id__ds__day - , subq_2.account_id__ds__week - , subq_2.account_id__ds__month - , subq_2.account_id__ds__quarter - , subq_2.account_id__ds__year - , subq_2.account_id__ds__extract_year - , subq_2.account_id__ds__extract_quarter - , subq_2.account_id__ds__extract_month - , subq_2.account_id__ds__extract_day - , subq_2.account_id__ds__extract_dow - , subq_2.account_id__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.account_id - , subq_2.account_month - , subq_2.account_id__account_month - , subq_2.txn_count + subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.account_id__ds_partitioned__day + , subq_11.account_id__ds_partitioned__week + , subq_11.account_id__ds_partitioned__month + , subq_11.account_id__ds_partitioned__quarter + , subq_11.account_id__ds_partitioned__year + , subq_11.account_id__ds_partitioned__extract_year + , subq_11.account_id__ds_partitioned__extract_quarter + , subq_11.account_id__ds_partitioned__extract_month + , subq_11.account_id__ds_partitioned__extract_day + , subq_11.account_id__ds_partitioned__extract_dow + , subq_11.account_id__ds_partitioned__extract_doy + , subq_11.account_id__ds__day + , subq_11.account_id__ds__week + , subq_11.account_id__ds__month + , subq_11.account_id__ds__quarter + , subq_11.account_id__ds__year + , subq_11.account_id__ds__extract_year + , subq_11.account_id__ds__extract_quarter + , subq_11.account_id__ds__extract_month + , subq_11.account_id__ds__extract_day + , subq_11.account_id__ds__extract_dow + , subq_11.account_id__ds__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.account_id + , subq_11.account_month + , subq_11.account_id__account_month + , subq_11.txn_count FROM ( -- Read Elements From Semantic Model 'account_month_txns' SELECT @@ -369,163 +369,163 @@ FROM ( , account_month_txns_src_22000.account_month AS account_id__account_month , account_month_txns_src_22000.account_id FROM ***************************.account_month_txns account_month_txns_src_22000 - ) subq_2 - ) subq_3 + ) subq_11 + ) subq_12 LEFT OUTER JOIN ( -- Pass Only Elements: ['ds_partitioned__day', 'account_id', 'customer_id__customer_third_hop_id'] SELECT - subq_9.ds_partitioned__day - , subq_9.account_id - , subq_9.customer_id__customer_third_hop_id + subq_18.ds_partitioned__day + , subq_18.account_id + , subq_18.customer_id__customer_third_hop_id FROM ( -- Join Standard Outputs SELECT - subq_8.country AS customer_id__country - , subq_8.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country - , subq_8.acquired_ds__day AS customer_id__acquired_ds__day - , subq_8.acquired_ds__week AS customer_id__acquired_ds__week - , subq_8.acquired_ds__month AS customer_id__acquired_ds__month - , subq_8.acquired_ds__quarter AS customer_id__acquired_ds__quarter - , subq_8.acquired_ds__year AS customer_id__acquired_ds__year - , subq_8.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year - , subq_8.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter - , subq_8.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month - , subq_8.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day - , subq_8.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow - , subq_8.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy - , subq_8.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day - , subq_8.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week - , subq_8.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month - , subq_8.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter - , subq_8.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year - , subq_8.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year - , subq_8.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter - , subq_8.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month - , subq_8.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day - , subq_8.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow - , subq_8.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy - , subq_8.metric_time__day AS customer_id__metric_time__day - , subq_8.metric_time__week AS customer_id__metric_time__week - , subq_8.metric_time__month AS customer_id__metric_time__month - , subq_8.metric_time__quarter AS customer_id__metric_time__quarter - , subq_8.metric_time__year AS customer_id__metric_time__year - , subq_8.metric_time__extract_year AS customer_id__metric_time__extract_year - , subq_8.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter - , subq_8.metric_time__extract_month AS customer_id__metric_time__extract_month - , subq_8.metric_time__extract_day AS customer_id__metric_time__extract_day - , subq_8.metric_time__extract_dow AS customer_id__metric_time__extract_dow - , subq_8.metric_time__extract_doy AS customer_id__metric_time__extract_doy - , subq_8.customer_third_hop_id AS customer_id__customer_third_hop_id - , subq_8.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id - , subq_5.ds_partitioned__day AS ds_partitioned__day - , subq_5.ds_partitioned__week AS ds_partitioned__week - , subq_5.ds_partitioned__month AS ds_partitioned__month - , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_5.ds_partitioned__year AS ds_partitioned__year - , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_5.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_5.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_5.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_5.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_5.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_5.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_5.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_5.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_5.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_5.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_5.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_5.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day - , subq_5.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week - , subq_5.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month - , subq_5.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter - , subq_5.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year - , subq_5.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year - , subq_5.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter - , subq_5.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month - , subq_5.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day - , subq_5.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow - , subq_5.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy - , subq_5.metric_time__day AS metric_time__day - , subq_5.metric_time__week AS metric_time__week - , subq_5.metric_time__month AS metric_time__month - , subq_5.metric_time__quarter AS metric_time__quarter - , subq_5.metric_time__year AS metric_time__year - , subq_5.metric_time__extract_year AS metric_time__extract_year - , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_5.metric_time__extract_month AS metric_time__extract_month - , subq_5.metric_time__extract_day AS metric_time__extract_day - , subq_5.metric_time__extract_dow AS metric_time__extract_dow - , subq_5.metric_time__extract_doy AS metric_time__extract_doy - , subq_5.account_id AS account_id - , subq_5.customer_id AS customer_id - , subq_5.account_id__customer_id AS account_id__customer_id - , subq_5.bridge_account__account_id AS bridge_account__account_id - , subq_5.bridge_account__customer_id AS bridge_account__customer_id - , subq_5.extra_dim AS extra_dim - , subq_5.account_id__extra_dim AS account_id__extra_dim - , subq_5.bridge_account__extra_dim AS bridge_account__extra_dim - , subq_5.account_customer_combos AS account_customer_combos + subq_17.country AS customer_id__country + , subq_17.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country + , subq_17.acquired_ds__day AS customer_id__acquired_ds__day + , subq_17.acquired_ds__week AS customer_id__acquired_ds__week + , subq_17.acquired_ds__month AS customer_id__acquired_ds__month + , subq_17.acquired_ds__quarter AS customer_id__acquired_ds__quarter + , subq_17.acquired_ds__year AS customer_id__acquired_ds__year + , subq_17.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year + , subq_17.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter + , subq_17.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month + , subq_17.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day + , subq_17.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow + , subq_17.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy + , subq_17.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day + , subq_17.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week + , subq_17.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month + , subq_17.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter + , subq_17.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year + , subq_17.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year + , subq_17.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter + , subq_17.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month + , subq_17.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day + , subq_17.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow + , subq_17.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy + , subq_17.metric_time__day AS customer_id__metric_time__day + , subq_17.metric_time__week AS customer_id__metric_time__week + , subq_17.metric_time__month AS customer_id__metric_time__month + , subq_17.metric_time__quarter AS customer_id__metric_time__quarter + , subq_17.metric_time__year AS customer_id__metric_time__year + , subq_17.metric_time__extract_year AS customer_id__metric_time__extract_year + , subq_17.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter + , subq_17.metric_time__extract_month AS customer_id__metric_time__extract_month + , subq_17.metric_time__extract_day AS customer_id__metric_time__extract_day + , subq_17.metric_time__extract_dow AS customer_id__metric_time__extract_dow + , subq_17.metric_time__extract_doy AS customer_id__metric_time__extract_doy + , subq_17.customer_third_hop_id AS customer_id__customer_third_hop_id + , subq_17.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id + , subq_14.ds_partitioned__day AS ds_partitioned__day + , subq_14.ds_partitioned__week AS ds_partitioned__week + , subq_14.ds_partitioned__month AS ds_partitioned__month + , subq_14.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_14.ds_partitioned__year AS ds_partitioned__year + , subq_14.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_14.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_14.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_14.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_14.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_14.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_14.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_14.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_14.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_14.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_14.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_14.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_14.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day + , subq_14.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week + , subq_14.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month + , subq_14.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter + , subq_14.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year + , subq_14.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year + , subq_14.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter + , subq_14.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month + , subq_14.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day + , subq_14.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow + , subq_14.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy + , subq_14.metric_time__day AS metric_time__day + , subq_14.metric_time__week AS metric_time__week + , subq_14.metric_time__month AS metric_time__month + , subq_14.metric_time__quarter AS metric_time__quarter + , subq_14.metric_time__year AS metric_time__year + , subq_14.metric_time__extract_year AS metric_time__extract_year + , subq_14.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_14.metric_time__extract_month AS metric_time__extract_month + , subq_14.metric_time__extract_day AS metric_time__extract_day + , subq_14.metric_time__extract_dow AS metric_time__extract_dow + , subq_14.metric_time__extract_doy AS metric_time__extract_doy + , subq_14.account_id AS account_id + , subq_14.customer_id AS customer_id + , subq_14.account_id__customer_id AS account_id__customer_id + , subq_14.bridge_account__account_id AS bridge_account__account_id + , subq_14.bridge_account__customer_id AS bridge_account__customer_id + , subq_14.extra_dim AS extra_dim + , subq_14.account_id__extra_dim AS account_id__extra_dim + , subq_14.bridge_account__extra_dim AS bridge_account__extra_dim + , subq_14.account_customer_combos AS account_customer_combos FROM ( -- Metric Time Dimension 'ds_partitioned' SELECT - subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.account_id__ds_partitioned__day - , subq_4.account_id__ds_partitioned__week - , subq_4.account_id__ds_partitioned__month - , subq_4.account_id__ds_partitioned__quarter - , subq_4.account_id__ds_partitioned__year - , subq_4.account_id__ds_partitioned__extract_year - , subq_4.account_id__ds_partitioned__extract_quarter - , subq_4.account_id__ds_partitioned__extract_month - , subq_4.account_id__ds_partitioned__extract_day - , subq_4.account_id__ds_partitioned__extract_dow - , subq_4.account_id__ds_partitioned__extract_doy - , subq_4.bridge_account__ds_partitioned__day - , subq_4.bridge_account__ds_partitioned__week - , subq_4.bridge_account__ds_partitioned__month - , subq_4.bridge_account__ds_partitioned__quarter - , subq_4.bridge_account__ds_partitioned__year - , subq_4.bridge_account__ds_partitioned__extract_year - , subq_4.bridge_account__ds_partitioned__extract_quarter - , subq_4.bridge_account__ds_partitioned__extract_month - , subq_4.bridge_account__ds_partitioned__extract_day - , subq_4.bridge_account__ds_partitioned__extract_dow - , subq_4.bridge_account__ds_partitioned__extract_doy - , subq_4.ds_partitioned__day AS metric_time__day - , subq_4.ds_partitioned__week AS metric_time__week - , subq_4.ds_partitioned__month AS metric_time__month - , subq_4.ds_partitioned__quarter AS metric_time__quarter - , subq_4.ds_partitioned__year AS metric_time__year - , subq_4.ds_partitioned__extract_year AS metric_time__extract_year - , subq_4.ds_partitioned__extract_quarter AS metric_time__extract_quarter - , subq_4.ds_partitioned__extract_month AS metric_time__extract_month - , subq_4.ds_partitioned__extract_day AS metric_time__extract_day - , subq_4.ds_partitioned__extract_dow AS metric_time__extract_dow - , subq_4.ds_partitioned__extract_doy AS metric_time__extract_doy - , subq_4.account_id - , subq_4.customer_id - , subq_4.account_id__customer_id - , subq_4.bridge_account__account_id - , subq_4.bridge_account__customer_id - , subq_4.extra_dim - , subq_4.account_id__extra_dim - , subq_4.bridge_account__extra_dim - , subq_4.account_customer_combos + subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.account_id__ds_partitioned__day + , subq_13.account_id__ds_partitioned__week + , subq_13.account_id__ds_partitioned__month + , subq_13.account_id__ds_partitioned__quarter + , subq_13.account_id__ds_partitioned__year + , subq_13.account_id__ds_partitioned__extract_year + , subq_13.account_id__ds_partitioned__extract_quarter + , subq_13.account_id__ds_partitioned__extract_month + , subq_13.account_id__ds_partitioned__extract_day + , subq_13.account_id__ds_partitioned__extract_dow + , subq_13.account_id__ds_partitioned__extract_doy + , subq_13.bridge_account__ds_partitioned__day + , subq_13.bridge_account__ds_partitioned__week + , subq_13.bridge_account__ds_partitioned__month + , subq_13.bridge_account__ds_partitioned__quarter + , subq_13.bridge_account__ds_partitioned__year + , subq_13.bridge_account__ds_partitioned__extract_year + , subq_13.bridge_account__ds_partitioned__extract_quarter + , subq_13.bridge_account__ds_partitioned__extract_month + , subq_13.bridge_account__ds_partitioned__extract_day + , subq_13.bridge_account__ds_partitioned__extract_dow + , subq_13.bridge_account__ds_partitioned__extract_doy + , subq_13.ds_partitioned__day AS metric_time__day + , subq_13.ds_partitioned__week AS metric_time__week + , subq_13.ds_partitioned__month AS metric_time__month + , subq_13.ds_partitioned__quarter AS metric_time__quarter + , subq_13.ds_partitioned__year AS metric_time__year + , subq_13.ds_partitioned__extract_year AS metric_time__extract_year + , subq_13.ds_partitioned__extract_quarter AS metric_time__extract_quarter + , subq_13.ds_partitioned__extract_month AS metric_time__extract_month + , subq_13.ds_partitioned__extract_day AS metric_time__extract_day + , subq_13.ds_partitioned__extract_dow AS metric_time__extract_dow + , subq_13.ds_partitioned__extract_doy AS metric_time__extract_doy + , subq_13.account_id + , subq_13.customer_id + , subq_13.account_id__customer_id + , subq_13.bridge_account__account_id + , subq_13.bridge_account__customer_id + , subq_13.extra_dim + , subq_13.account_id__extra_dim + , subq_13.bridge_account__extra_dim + , subq_13.account_customer_combos FROM ( -- Read Elements From Semantic Model 'bridge_table' SELECT @@ -572,8 +572,8 @@ FROM ( , bridge_table_src_22000.account_id AS bridge_account__account_id , bridge_table_src_22000.customer_id AS bridge_account__customer_id FROM ***************************.bridge_table bridge_table_src_22000 - ) subq_4 - ) subq_5 + ) subq_13 + ) subq_14 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'country', @@ -629,112 +629,112 @@ FROM ( -- 'customer_third_hop_id__customer_id', -- ] SELECT - subq_7.acquired_ds__day - , subq_7.acquired_ds__week - , subq_7.acquired_ds__month - , subq_7.acquired_ds__quarter - , subq_7.acquired_ds__year - , subq_7.acquired_ds__extract_year - , subq_7.acquired_ds__extract_quarter - , subq_7.acquired_ds__extract_month - , subq_7.acquired_ds__extract_day - , subq_7.acquired_ds__extract_dow - , subq_7.acquired_ds__extract_doy - , subq_7.customer_id__acquired_ds__day - , subq_7.customer_id__acquired_ds__week - , subq_7.customer_id__acquired_ds__month - , subq_7.customer_id__acquired_ds__quarter - , subq_7.customer_id__acquired_ds__year - , subq_7.customer_id__acquired_ds__extract_year - , subq_7.customer_id__acquired_ds__extract_quarter - , subq_7.customer_id__acquired_ds__extract_month - , subq_7.customer_id__acquired_ds__extract_day - , subq_7.customer_id__acquired_ds__extract_dow - , subq_7.customer_id__acquired_ds__extract_doy - , subq_7.customer_third_hop_id__acquired_ds__day - , subq_7.customer_third_hop_id__acquired_ds__week - , subq_7.customer_third_hop_id__acquired_ds__month - , subq_7.customer_third_hop_id__acquired_ds__quarter - , subq_7.customer_third_hop_id__acquired_ds__year - , subq_7.customer_third_hop_id__acquired_ds__extract_year - , subq_7.customer_third_hop_id__acquired_ds__extract_quarter - , subq_7.customer_third_hop_id__acquired_ds__extract_month - , subq_7.customer_third_hop_id__acquired_ds__extract_day - , subq_7.customer_third_hop_id__acquired_ds__extract_dow - , subq_7.customer_third_hop_id__acquired_ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.customer_id - , subq_7.customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id - , subq_7.customer_third_hop_id__customer_id - , subq_7.country - , subq_7.customer_id__country - , subq_7.customer_third_hop_id__country + subq_16.acquired_ds__day + , subq_16.acquired_ds__week + , subq_16.acquired_ds__month + , subq_16.acquired_ds__quarter + , subq_16.acquired_ds__year + , subq_16.acquired_ds__extract_year + , subq_16.acquired_ds__extract_quarter + , subq_16.acquired_ds__extract_month + , subq_16.acquired_ds__extract_day + , subq_16.acquired_ds__extract_dow + , subq_16.acquired_ds__extract_doy + , subq_16.customer_id__acquired_ds__day + , subq_16.customer_id__acquired_ds__week + , subq_16.customer_id__acquired_ds__month + , subq_16.customer_id__acquired_ds__quarter + , subq_16.customer_id__acquired_ds__year + , subq_16.customer_id__acquired_ds__extract_year + , subq_16.customer_id__acquired_ds__extract_quarter + , subq_16.customer_id__acquired_ds__extract_month + , subq_16.customer_id__acquired_ds__extract_day + , subq_16.customer_id__acquired_ds__extract_dow + , subq_16.customer_id__acquired_ds__extract_doy + , subq_16.customer_third_hop_id__acquired_ds__day + , subq_16.customer_third_hop_id__acquired_ds__week + , subq_16.customer_third_hop_id__acquired_ds__month + , subq_16.customer_third_hop_id__acquired_ds__quarter + , subq_16.customer_third_hop_id__acquired_ds__year + , subq_16.customer_third_hop_id__acquired_ds__extract_year + , subq_16.customer_third_hop_id__acquired_ds__extract_quarter + , subq_16.customer_third_hop_id__acquired_ds__extract_month + , subq_16.customer_third_hop_id__acquired_ds__extract_day + , subq_16.customer_third_hop_id__acquired_ds__extract_dow + , subq_16.customer_third_hop_id__acquired_ds__extract_doy + , subq_16.metric_time__day + , subq_16.metric_time__week + , subq_16.metric_time__month + , subq_16.metric_time__quarter + , subq_16.metric_time__year + , subq_16.metric_time__extract_year + , subq_16.metric_time__extract_quarter + , subq_16.metric_time__extract_month + , subq_16.metric_time__extract_day + , subq_16.metric_time__extract_dow + , subq_16.metric_time__extract_doy + , subq_16.customer_id + , subq_16.customer_third_hop_id + , subq_16.customer_id__customer_third_hop_id + , subq_16.customer_third_hop_id__customer_id + , subq_16.country + , subq_16.customer_id__country + , subq_16.customer_third_hop_id__country FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_6.acquired_ds__day - , subq_6.acquired_ds__week - , subq_6.acquired_ds__month - , subq_6.acquired_ds__quarter - , subq_6.acquired_ds__year - , subq_6.acquired_ds__extract_year - , subq_6.acquired_ds__extract_quarter - , subq_6.acquired_ds__extract_month - , subq_6.acquired_ds__extract_day - , subq_6.acquired_ds__extract_dow - , subq_6.acquired_ds__extract_doy - , subq_6.customer_id__acquired_ds__day - , subq_6.customer_id__acquired_ds__week - , subq_6.customer_id__acquired_ds__month - , subq_6.customer_id__acquired_ds__quarter - , subq_6.customer_id__acquired_ds__year - , subq_6.customer_id__acquired_ds__extract_year - , subq_6.customer_id__acquired_ds__extract_quarter - , subq_6.customer_id__acquired_ds__extract_month - , subq_6.customer_id__acquired_ds__extract_day - , subq_6.customer_id__acquired_ds__extract_dow - , subq_6.customer_id__acquired_ds__extract_doy - , subq_6.customer_third_hop_id__acquired_ds__day - , subq_6.customer_third_hop_id__acquired_ds__week - , subq_6.customer_third_hop_id__acquired_ds__month - , subq_6.customer_third_hop_id__acquired_ds__quarter - , subq_6.customer_third_hop_id__acquired_ds__year - , subq_6.customer_third_hop_id__acquired_ds__extract_year - , subq_6.customer_third_hop_id__acquired_ds__extract_quarter - , subq_6.customer_third_hop_id__acquired_ds__extract_month - , subq_6.customer_third_hop_id__acquired_ds__extract_day - , subq_6.customer_third_hop_id__acquired_ds__extract_dow - , subq_6.customer_third_hop_id__acquired_ds__extract_doy - , subq_6.acquired_ds__day AS metric_time__day - , subq_6.acquired_ds__week AS metric_time__week - , subq_6.acquired_ds__month AS metric_time__month - , subq_6.acquired_ds__quarter AS metric_time__quarter - , subq_6.acquired_ds__year AS metric_time__year - , subq_6.acquired_ds__extract_year AS metric_time__extract_year - , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_6.acquired_ds__extract_month AS metric_time__extract_month - , subq_6.acquired_ds__extract_day AS metric_time__extract_day - , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_6.customer_id - , subq_6.customer_third_hop_id - , subq_6.customer_id__customer_third_hop_id - , subq_6.customer_third_hop_id__customer_id - , subq_6.country - , subq_6.customer_id__country - , subq_6.customer_third_hop_id__country - , subq_6.customers_with_other_data + subq_15.acquired_ds__day + , subq_15.acquired_ds__week + , subq_15.acquired_ds__month + , subq_15.acquired_ds__quarter + , subq_15.acquired_ds__year + , subq_15.acquired_ds__extract_year + , subq_15.acquired_ds__extract_quarter + , subq_15.acquired_ds__extract_month + , subq_15.acquired_ds__extract_day + , subq_15.acquired_ds__extract_dow + , subq_15.acquired_ds__extract_doy + , subq_15.customer_id__acquired_ds__day + , subq_15.customer_id__acquired_ds__week + , subq_15.customer_id__acquired_ds__month + , subq_15.customer_id__acquired_ds__quarter + , subq_15.customer_id__acquired_ds__year + , subq_15.customer_id__acquired_ds__extract_year + , subq_15.customer_id__acquired_ds__extract_quarter + , subq_15.customer_id__acquired_ds__extract_month + , subq_15.customer_id__acquired_ds__extract_day + , subq_15.customer_id__acquired_ds__extract_dow + , subq_15.customer_id__acquired_ds__extract_doy + , subq_15.customer_third_hop_id__acquired_ds__day + , subq_15.customer_third_hop_id__acquired_ds__week + , subq_15.customer_third_hop_id__acquired_ds__month + , subq_15.customer_third_hop_id__acquired_ds__quarter + , subq_15.customer_third_hop_id__acquired_ds__year + , subq_15.customer_third_hop_id__acquired_ds__extract_year + , subq_15.customer_third_hop_id__acquired_ds__extract_quarter + , subq_15.customer_third_hop_id__acquired_ds__extract_month + , subq_15.customer_third_hop_id__acquired_ds__extract_day + , subq_15.customer_third_hop_id__acquired_ds__extract_dow + , subq_15.customer_third_hop_id__acquired_ds__extract_doy + , subq_15.acquired_ds__day AS metric_time__day + , subq_15.acquired_ds__week AS metric_time__week + , subq_15.acquired_ds__month AS metric_time__month + , subq_15.acquired_ds__quarter AS metric_time__quarter + , subq_15.acquired_ds__year AS metric_time__year + , subq_15.acquired_ds__extract_year AS metric_time__extract_year + , subq_15.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_15.acquired_ds__extract_month AS metric_time__extract_month + , subq_15.acquired_ds__extract_day AS metric_time__extract_day + , subq_15.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_15.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_15.customer_id + , subq_15.customer_third_hop_id + , subq_15.customer_id__customer_third_hop_id + , subq_15.customer_third_hop_id__customer_id + , subq_15.country + , subq_15.customer_id__country + , subq_15.customer_third_hop_id__country + , subq_15.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -780,30 +780,30 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_15 + ) subq_16 + ) subq_17 ON - subq_5.customer_id = subq_8.customer_id - ) subq_9 - ) subq_10 + subq_14.customer_id = subq_17.customer_id + ) subq_18 + ) subq_19 ON ( - subq_3.account_id = subq_10.account_id + subq_12.account_id = subq_19.account_id ) AND ( - subq_3.ds_partitioned__day = subq_10.ds_partitioned__day + subq_12.ds_partitioned__day = subq_19.ds_partitioned__day ) - ) subq_11 - ) subq_12 + ) subq_20 + ) subq_21 GROUP BY account_id__customer_id__customer_third_hop_id - ) subq_13 - ) subq_14 - ) subq_15 + ) subq_22 + ) subq_23 + ) subq_24 ON - subq_1.customer_third_hop_id = subq_15.account_id__customer_id__customer_third_hop_id - ) subq_16 + subq_10.customer_third_hop_id = subq_24.account_id__customer_id__customer_third_hop_id + ) subq_25 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 - ) subq_17 - ) subq_18 -) subq_19 + ) subq_26 + ) subq_27 +) subq_28 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0_optimized.sql index 4871deb408..ada9c5b4f5 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_multi_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_35.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + subq_44.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -23,7 +23,7 @@ FROM ( -- Compute Metrics via Expressions -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_30.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + subq_39.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id , SUM(account_month_txns_src_22000.txn_count) AS account_id__customer_id__customer_third_hop_id__txn_count FROM ***************************.account_month_txns account_month_txns_src_22000 LEFT OUTER JOIN ( @@ -38,17 +38,17 @@ FROM ( ***************************.customer_other_data customer_other_data_src_22000 ON bridge_table_src_22000.customer_id = customer_other_data_src_22000.customer_id - ) subq_30 + ) subq_39 ON ( - account_month_txns_src_22000.account_id = subq_30.account_id + account_month_txns_src_22000.account_id = subq_39.account_id ) AND ( - DATETIME_TRUNC(account_month_txns_src_22000.ds_partitioned, day) = subq_30.ds_partitioned__day + DATETIME_TRUNC(account_month_txns_src_22000.ds_partitioned, day) = subq_39.ds_partitioned__day ) GROUP BY account_id__customer_id__customer_third_hop_id - ) subq_35 + ) subq_44 ON - third_hop_table_src_22000.customer_third_hop_id = subq_35.account_id__customer_id__customer_third_hop_id -) subq_36 + third_hop_table_src_22000.customer_third_hop_id = subq_44.account_id__customer_id__customer_third_hop_id +) subq_45 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0.sql index bd21e6c2e8..d0ae6d029e 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_12.third_hop_count + subq_16.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_11.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_15.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_10.third_hop_count + subq_14.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_9.third_hop_ds__day - , subq_9.third_hop_ds__week - , subq_9.third_hop_ds__month - , subq_9.third_hop_ds__quarter - , subq_9.third_hop_ds__year - , subq_9.third_hop_ds__extract_year - , subq_9.third_hop_ds__extract_quarter - , subq_9.third_hop_ds__extract_month - , subq_9.third_hop_ds__extract_day - , subq_9.third_hop_ds__extract_dow - , subq_9.third_hop_ds__extract_doy - , subq_9.customer_third_hop_id__third_hop_ds__day - , subq_9.customer_third_hop_id__third_hop_ds__week - , subq_9.customer_third_hop_id__third_hop_ds__month - , subq_9.customer_third_hop_id__third_hop_ds__quarter - , subq_9.customer_third_hop_id__third_hop_ds__year - , subq_9.customer_third_hop_id__third_hop_ds__extract_year - , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_9.customer_third_hop_id__third_hop_ds__extract_month - , subq_9.customer_third_hop_id__third_hop_ds__extract_day - , subq_9.customer_third_hop_id__third_hop_ds__extract_dow - , subq_9.customer_third_hop_id__third_hop_ds__extract_doy - , subq_9.metric_time__day - , subq_9.metric_time__week - , subq_9.metric_time__month - , subq_9.metric_time__quarter - , subq_9.metric_time__year - , subq_9.metric_time__extract_year - , subq_9.metric_time__extract_quarter - , subq_9.metric_time__extract_month - , subq_9.metric_time__extract_day - , subq_9.metric_time__extract_dow - , subq_9.metric_time__extract_doy - , subq_9.customer_third_hop_id - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id - , subq_9.value - , subq_9.customer_third_hop_id__value - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_9.third_hop_count + subq_13.third_hop_ds__day + , subq_13.third_hop_ds__week + , subq_13.third_hop_ds__month + , subq_13.third_hop_ds__quarter + , subq_13.third_hop_ds__year + , subq_13.third_hop_ds__extract_year + , subq_13.third_hop_ds__extract_quarter + , subq_13.third_hop_ds__extract_month + , subq_13.third_hop_ds__extract_day + , subq_13.third_hop_ds__extract_dow + , subq_13.third_hop_ds__extract_doy + , subq_13.customer_third_hop_id__third_hop_ds__day + , subq_13.customer_third_hop_id__third_hop_ds__week + , subq_13.customer_third_hop_id__third_hop_ds__month + , subq_13.customer_third_hop_id__third_hop_ds__quarter + , subq_13.customer_third_hop_id__third_hop_ds__year + , subq_13.customer_third_hop_id__third_hop_ds__extract_year + , subq_13.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_13.customer_third_hop_id__third_hop_ds__extract_month + , subq_13.customer_third_hop_id__third_hop_ds__extract_day + , subq_13.customer_third_hop_id__third_hop_ds__extract_dow + , subq_13.customer_third_hop_id__third_hop_ds__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.customer_third_hop_id + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id + , subq_13.value + , subq_13.customer_third_hop_id__value + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_13.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_8.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id - , subq_8.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_12.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id + , subq_12.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_5.third_hop_ds__day AS third_hop_ds__day + , subq_5.third_hop_ds__week AS third_hop_ds__week + , subq_5.third_hop_ds__month AS third_hop_ds__month + , subq_5.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_5.third_hop_ds__year AS third_hop_ds__year + , subq_5.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_5.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_5.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_5.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_5.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_5.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_5.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_5.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_5.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_5.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_5.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_5.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_5.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_5.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_5.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_5.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_5.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.customer_third_hop_id AS customer_third_hop_id + , subq_5.value AS value + , subq_5.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_5.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_4.third_hop_ds__day + , subq_4.third_hop_ds__week + , subq_4.third_hop_ds__month + , subq_4.third_hop_ds__quarter + , subq_4.third_hop_ds__year + , subq_4.third_hop_ds__extract_year + , subq_4.third_hop_ds__extract_quarter + , subq_4.third_hop_ds__extract_month + , subq_4.third_hop_ds__extract_day + , subq_4.third_hop_ds__extract_dow + , subq_4.third_hop_ds__extract_doy + , subq_4.customer_third_hop_id__third_hop_ds__day + , subq_4.customer_third_hop_id__third_hop_ds__week + , subq_4.customer_third_hop_id__third_hop_ds__month + , subq_4.customer_third_hop_id__third_hop_ds__quarter + , subq_4.customer_third_hop_id__third_hop_ds__year + , subq_4.customer_third_hop_id__third_hop_ds__extract_year + , subq_4.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_4.customer_third_hop_id__third_hop_ds__extract_month + , subq_4.customer_third_hop_id__third_hop_ds__extract_day + , subq_4.customer_third_hop_id__third_hop_ds__extract_dow + , subq_4.customer_third_hop_id__third_hop_ds__extract_doy + , subq_4.third_hop_ds__day AS metric_time__day + , subq_4.third_hop_ds__week AS metric_time__week + , subq_4.third_hop_ds__month AS metric_time__month + , subq_4.third_hop_ds__quarter AS metric_time__quarter + , subq_4.third_hop_ds__year AS metric_time__year + , subq_4.third_hop_ds__extract_year AS metric_time__extract_year + , subq_4.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_4.third_hop_ds__extract_month AS metric_time__extract_month + , subq_4.third_hop_ds__extract_day AS metric_time__extract_day + , subq_4.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_4.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_4.customer_third_hop_id + , subq_4.value + , subq_4.customer_third_hop_id__value + , subq_4.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,138 +169,138 @@ FROM ( , EXTRACT(dayofyear FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 LEFT OUTER JOIN ( -- Pass Only Elements: ['customer_id__customer_third_hop_id', 'customer_id__customer_third_hop_id__paraguayan_customers'] SELECT - subq_7.customer_id__customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id__paraguayan_customers + subq_11.customer_id__customer_third_hop_id + , subq_11.customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Compute Metrics via Expressions SELECT - subq_6.customer_id__customer_third_hop_id - , subq_6.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers + subq_10.customer_id__customer_third_hop_id + , subq_10.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Aggregate Measures SELECT - subq_5.customer_id__customer_third_hop_id - , SUM(subq_5.customers_with_other_data) AS customers_with_other_data + subq_9.customer_id__customer_third_hop_id + , SUM(subq_9.customers_with_other_data) AS customers_with_other_data FROM ( -- Pass Only Elements: ['customers_with_other_data', 'customer_id__customer_third_hop_id'] SELECT - subq_4.customer_id__customer_third_hop_id - , subq_4.customers_with_other_data + subq_8.customer_id__customer_third_hop_id + , subq_8.customers_with_other_data FROM ( -- Constrain Output with WHERE SELECT - subq_3.acquired_ds__day - , subq_3.acquired_ds__week - , subq_3.acquired_ds__month - , subq_3.acquired_ds__quarter - , subq_3.acquired_ds__year - , subq_3.acquired_ds__extract_year - , subq_3.acquired_ds__extract_quarter - , subq_3.acquired_ds__extract_month - , subq_3.acquired_ds__extract_day - , subq_3.acquired_ds__extract_dow - , subq_3.acquired_ds__extract_doy - , subq_3.customer_id__acquired_ds__day - , subq_3.customer_id__acquired_ds__week - , subq_3.customer_id__acquired_ds__month - , subq_3.customer_id__acquired_ds__quarter - , subq_3.customer_id__acquired_ds__year - , subq_3.customer_id__acquired_ds__extract_year - , subq_3.customer_id__acquired_ds__extract_quarter - , subq_3.customer_id__acquired_ds__extract_month - , subq_3.customer_id__acquired_ds__extract_day - , subq_3.customer_id__acquired_ds__extract_dow - , subq_3.customer_id__acquired_ds__extract_doy - , subq_3.customer_third_hop_id__acquired_ds__day - , subq_3.customer_third_hop_id__acquired_ds__week - , subq_3.customer_third_hop_id__acquired_ds__month - , subq_3.customer_third_hop_id__acquired_ds__quarter - , subq_3.customer_third_hop_id__acquired_ds__year - , subq_3.customer_third_hop_id__acquired_ds__extract_year - , subq_3.customer_third_hop_id__acquired_ds__extract_quarter - , subq_3.customer_third_hop_id__acquired_ds__extract_month - , subq_3.customer_third_hop_id__acquired_ds__extract_day - , subq_3.customer_third_hop_id__acquired_ds__extract_dow - , subq_3.customer_third_hop_id__acquired_ds__extract_doy - , subq_3.metric_time__day - , subq_3.metric_time__week - , subq_3.metric_time__month - , subq_3.metric_time__quarter - , subq_3.metric_time__year - , subq_3.metric_time__extract_year - , subq_3.metric_time__extract_quarter - , subq_3.metric_time__extract_month - , subq_3.metric_time__extract_day - , subq_3.metric_time__extract_dow - , subq_3.metric_time__extract_doy - , subq_3.customer_id - , subq_3.customer_third_hop_id - , subq_3.customer_id__customer_third_hop_id - , subq_3.customer_third_hop_id__customer_id - , subq_3.country - , subq_3.customer_id__country - , subq_3.customer_third_hop_id__country - , subq_3.customers_with_other_data + subq_7.acquired_ds__day + , subq_7.acquired_ds__week + , subq_7.acquired_ds__month + , subq_7.acquired_ds__quarter + , subq_7.acquired_ds__year + , subq_7.acquired_ds__extract_year + , subq_7.acquired_ds__extract_quarter + , subq_7.acquired_ds__extract_month + , subq_7.acquired_ds__extract_day + , subq_7.acquired_ds__extract_dow + , subq_7.acquired_ds__extract_doy + , subq_7.customer_id__acquired_ds__day + , subq_7.customer_id__acquired_ds__week + , subq_7.customer_id__acquired_ds__month + , subq_7.customer_id__acquired_ds__quarter + , subq_7.customer_id__acquired_ds__year + , subq_7.customer_id__acquired_ds__extract_year + , subq_7.customer_id__acquired_ds__extract_quarter + , subq_7.customer_id__acquired_ds__extract_month + , subq_7.customer_id__acquired_ds__extract_day + , subq_7.customer_id__acquired_ds__extract_dow + , subq_7.customer_id__acquired_ds__extract_doy + , subq_7.customer_third_hop_id__acquired_ds__day + , subq_7.customer_third_hop_id__acquired_ds__week + , subq_7.customer_third_hop_id__acquired_ds__month + , subq_7.customer_third_hop_id__acquired_ds__quarter + , subq_7.customer_third_hop_id__acquired_ds__year + , subq_7.customer_third_hop_id__acquired_ds__extract_year + , subq_7.customer_third_hop_id__acquired_ds__extract_quarter + , subq_7.customer_third_hop_id__acquired_ds__extract_month + , subq_7.customer_third_hop_id__acquired_ds__extract_day + , subq_7.customer_third_hop_id__acquired_ds__extract_dow + , subq_7.customer_third_hop_id__acquired_ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.customer_id + , subq_7.customer_third_hop_id + , subq_7.customer_id__customer_third_hop_id + , subq_7.customer_third_hop_id__customer_id + , subq_7.country + , subq_7.customer_id__country + , subq_7.customer_third_hop_id__country + , subq_7.customers_with_other_data FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_2.acquired_ds__day - , subq_2.acquired_ds__week - , subq_2.acquired_ds__month - , subq_2.acquired_ds__quarter - , subq_2.acquired_ds__year - , subq_2.acquired_ds__extract_year - , subq_2.acquired_ds__extract_quarter - , subq_2.acquired_ds__extract_month - , subq_2.acquired_ds__extract_day - , subq_2.acquired_ds__extract_dow - , subq_2.acquired_ds__extract_doy - , subq_2.customer_id__acquired_ds__day - , subq_2.customer_id__acquired_ds__week - , subq_2.customer_id__acquired_ds__month - , subq_2.customer_id__acquired_ds__quarter - , subq_2.customer_id__acquired_ds__year - , subq_2.customer_id__acquired_ds__extract_year - , subq_2.customer_id__acquired_ds__extract_quarter - , subq_2.customer_id__acquired_ds__extract_month - , subq_2.customer_id__acquired_ds__extract_day - , subq_2.customer_id__acquired_ds__extract_dow - , subq_2.customer_id__acquired_ds__extract_doy - , subq_2.customer_third_hop_id__acquired_ds__day - , subq_2.customer_third_hop_id__acquired_ds__week - , subq_2.customer_third_hop_id__acquired_ds__month - , subq_2.customer_third_hop_id__acquired_ds__quarter - , subq_2.customer_third_hop_id__acquired_ds__year - , subq_2.customer_third_hop_id__acquired_ds__extract_year - , subq_2.customer_third_hop_id__acquired_ds__extract_quarter - , subq_2.customer_third_hop_id__acquired_ds__extract_month - , subq_2.customer_third_hop_id__acquired_ds__extract_day - , subq_2.customer_third_hop_id__acquired_ds__extract_dow - , subq_2.customer_third_hop_id__acquired_ds__extract_doy - , subq_2.acquired_ds__day AS metric_time__day - , subq_2.acquired_ds__week AS metric_time__week - , subq_2.acquired_ds__month AS metric_time__month - , subq_2.acquired_ds__quarter AS metric_time__quarter - , subq_2.acquired_ds__year AS metric_time__year - , subq_2.acquired_ds__extract_year AS metric_time__extract_year - , subq_2.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_2.acquired_ds__extract_month AS metric_time__extract_month - , subq_2.acquired_ds__extract_day AS metric_time__extract_day - , subq_2.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_2.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_2.customer_id - , subq_2.customer_third_hop_id - , subq_2.customer_id__customer_third_hop_id - , subq_2.customer_third_hop_id__customer_id - , subq_2.country - , subq_2.customer_id__country - , subq_2.customer_third_hop_id__country - , subq_2.customers_with_other_data + subq_6.acquired_ds__day + , subq_6.acquired_ds__week + , subq_6.acquired_ds__month + , subq_6.acquired_ds__quarter + , subq_6.acquired_ds__year + , subq_6.acquired_ds__extract_year + , subq_6.acquired_ds__extract_quarter + , subq_6.acquired_ds__extract_month + , subq_6.acquired_ds__extract_day + , subq_6.acquired_ds__extract_dow + , subq_6.acquired_ds__extract_doy + , subq_6.customer_id__acquired_ds__day + , subq_6.customer_id__acquired_ds__week + , subq_6.customer_id__acquired_ds__month + , subq_6.customer_id__acquired_ds__quarter + , subq_6.customer_id__acquired_ds__year + , subq_6.customer_id__acquired_ds__extract_year + , subq_6.customer_id__acquired_ds__extract_quarter + , subq_6.customer_id__acquired_ds__extract_month + , subq_6.customer_id__acquired_ds__extract_day + , subq_6.customer_id__acquired_ds__extract_dow + , subq_6.customer_id__acquired_ds__extract_doy + , subq_6.customer_third_hop_id__acquired_ds__day + , subq_6.customer_third_hop_id__acquired_ds__week + , subq_6.customer_third_hop_id__acquired_ds__month + , subq_6.customer_third_hop_id__acquired_ds__quarter + , subq_6.customer_third_hop_id__acquired_ds__year + , subq_6.customer_third_hop_id__acquired_ds__extract_year + , subq_6.customer_third_hop_id__acquired_ds__extract_quarter + , subq_6.customer_third_hop_id__acquired_ds__extract_month + , subq_6.customer_third_hop_id__acquired_ds__extract_day + , subq_6.customer_third_hop_id__acquired_ds__extract_dow + , subq_6.customer_third_hop_id__acquired_ds__extract_doy + , subq_6.acquired_ds__day AS metric_time__day + , subq_6.acquired_ds__week AS metric_time__week + , subq_6.acquired_ds__month AS metric_time__month + , subq_6.acquired_ds__quarter AS metric_time__quarter + , subq_6.acquired_ds__year AS metric_time__year + , subq_6.acquired_ds__extract_year AS metric_time__extract_year + , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_6.acquired_ds__extract_month AS metric_time__extract_month + , subq_6.acquired_ds__extract_day AS metric_time__extract_day + , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_6.customer_id + , subq_6.customer_third_hop_id + , subq_6.customer_id__customer_third_hop_id + , subq_6.customer_third_hop_id__customer_id + , subq_6.country + , subq_6.customer_id__country + , subq_6.customer_third_hop_id__country + , subq_6.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -346,20 +346,20 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_2 - ) subq_3 + ) subq_6 + ) subq_7 WHERE customer_id__country = 'paraguay' - ) subq_4 - ) subq_5 + ) subq_8 + ) subq_9 GROUP BY customer_id__customer_third_hop_id - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_10 + ) subq_11 + ) subq_12 ON - subq_1.customer_third_hop_id = subq_8.customer_id__customer_third_hop_id - ) subq_9 + subq_5.customer_third_hop_id = subq_12.customer_id__customer_third_hop_id + ) subq_13 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 - ) subq_10 - ) subq_11 -) subq_12 + ) subq_14 + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0_optimized.sql index e5c386cf63..1676bd3876 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_inner_query_single_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_21.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + subq_25.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -33,12 +33,12 @@ FROM ( , country AS customer_id__country , 1 AS customers_with_other_data FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_16 + ) subq_20 WHERE customer_id__country = 'paraguay' GROUP BY customer_id__customer_third_hop_id - ) subq_21 + ) subq_25 ON - third_hop_table_src_22000.customer_third_hop_id = subq_21.customer_id__customer_third_hop_id -) subq_22 + third_hop_table_src_22000.customer_third_hop_id = subq_25.customer_id__customer_third_hop_id +) subq_26 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0.sql index b2434154f9..631ec7a2db 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0.sql @@ -6,320 +6,320 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.listing__bookers - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.listing__bookers + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.listing__bookers AS listing__bookers + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_6.listing - , subq_6.listing__bookers + subq_8.listing + , subq_8.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookers AS listing__bookers + subq_7.listing + , subq_7.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_4.listing - , COUNT(DISTINCT subq_4.bookers) AS bookers + subq_6.listing + , COUNT(DISTINCT subq_6.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_3.listing - , subq_3.bookers + subq_5.listing + , subq_5.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY listing - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_9.listing + ) subq_10 WHERE listing__bookers > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0_optimized.sql index c3b0cf49fa..8488c1cd43 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_filtered_by_itself__plan0_optimized.sql @@ -22,15 +22,15 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.listing__bookers AS listing__bookers - , subq_13.bookers AS bookers + subq_20.listing__bookers AS listing__bookers + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT listing , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -43,8 +43,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_18 + ) subq_20 ON - subq_13.listing = subq_18.listing -) subq_19 + subq_15.listing = subq_20.listing +) subq_21 WHERE listing__bookers > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql index fcbc787571..b2beb08788 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0.sql @@ -6,230 +6,230 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day - , subq_11.listings AS active_listings + subq_14.metric_time__day + , subq_14.listings AS active_listings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__day - , SUM(subq_10.listings) AS listings + subq_13.metric_time__day + , SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings', 'metric_time__day'] SELECT - subq_9.metric_time__day - , subq_9.listings + subq_12.metric_time__day + , subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.listing__bookings - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.listing__bookings + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -290,129 +290,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_9.listing + , subq_9.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_8.listing + , subq_8.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_7.listing + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_6.listing + , subq_6.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -505,20 +505,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY listing - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_10.listing + ) subq_11 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 + ) subq_12 + ) subq_13 GROUP BY metric_time__day -) subq_11 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql index 5cb94bbb5c..eef6737e78 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_metric_with_metric_in_where_filter__plan0_optimized.sql @@ -14,9 +14,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.listing__bookings AS listing__bookings - , subq_13.metric_time__day AS metric_time__day - , subq_13.listings AS listings + subq_22.listing__bookings AS listing__bookings + , subq_16.metric_time__day AS metric_time__day + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -25,7 +25,7 @@ FROM ( , listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -41,13 +41,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_16 + ) subq_19 GROUP BY listing - ) subq_19 + ) subq_22 ON - subq_13.listing = subq_19.listing -) subq_20 + subq_16.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql index d6e6b3b53f..cc98785f52 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0.sql @@ -8,227 +8,227 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.listings + subq_14.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_10.listings) AS listings + SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_9.listings + subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.user__revenue_all_time - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.user__revenue_all_time + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.user__revenue_all_time AS user__revenue_all_time - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.user__revenue_all_time AS user__revenue_all_time + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,67 +289,67 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__revenue_all_time'] SELECT - subq_6.user - , subq_6.user__revenue_all_time + subq_9.user + , subq_9.user__revenue_all_time FROM ( -- Compute Metrics via Expressions SELECT - subq_5.user - , subq_5.txn_revenue AS user__revenue_all_time + subq_8.user + , subq_8.txn_revenue AS user__revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.txn_revenue) AS txn_revenue + subq_7.user + , SUM(subq_7.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'user'] SELECT - subq_3.user - , subq_3.txn_revenue + subq_6.user + , subq_6.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.revenue_instance__ds__day - , subq_2.revenue_instance__ds__week - , subq_2.revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.revenue_instance__user - , subq_2.txn_revenue + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.revenue_instance__ds__day + , subq_5.revenue_instance__ds__week + , subq_5.revenue_instance__ds__month + , subq_5.revenue_instance__ds__quarter + , subq_5.revenue_instance__ds__year + , subq_5.revenue_instance__ds__extract_year + , subq_5.revenue_instance__ds__extract_quarter + , subq_5.revenue_instance__ds__extract_month + , subq_5.revenue_instance__ds__extract_day + , subq_5.revenue_instance__ds__extract_dow + , subq_5.revenue_instance__ds__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.user + , subq_5.revenue_instance__user + , subq_5.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -379,18 +379,18 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY user - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.user = subq_7.user - ) subq_8 + subq_4.user = subq_10.user + ) subq_11 WHERE user__revenue_all_time > 1 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_12 + ) subq_13 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql index 4fe1878955..752f59ce6e 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql @@ -15,8 +15,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.user__revenue_all_time AS user__revenue_all_time - , subq_13.listings AS listings + subq_22.user__revenue_all_time AS user__revenue_all_time + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -24,7 +24,7 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -38,8 +38,8 @@ FROM ( FROM ***************************.fct_revenue revenue_src_28000 GROUP BY user - ) subq_19 + ) subq_22 ON - subq_13.user = subq_19.user -) subq_20 + subq_16.user = subq_22.user +) subq_23 WHERE user__revenue_all_time > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql index 54c9a96704..c88a7bba2f 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_27.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_26.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_25.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__views_times_booking_value - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.created_at__day + , subq_24.created_at__week + , subq_24.created_at__month + , subq_24.created_at__quarter + , subq_24.created_at__year + , subq_24.created_at__extract_year + , subq_24.created_at__extract_quarter + , subq_24.created_at__extract_month + , subq_24.created_at__extract_day + , subq_24.created_at__extract_dow + , subq_24.created_at__extract_doy + , subq_24.listing__ds__day + , subq_24.listing__ds__week + , subq_24.listing__ds__month + , subq_24.listing__ds__quarter + , subq_24.listing__ds__year + , subq_24.listing__ds__extract_year + , subq_24.listing__ds__extract_quarter + , subq_24.listing__ds__extract_month + , subq_24.listing__ds__extract_day + , subq_24.listing__ds__extract_dow + , subq_24.listing__ds__extract_doy + , subq_24.listing__created_at__day + , subq_24.listing__created_at__week + , subq_24.listing__created_at__month + , subq_24.listing__created_at__quarter + , subq_24.listing__created_at__year + , subq_24.listing__created_at__extract_year + , subq_24.listing__created_at__extract_quarter + , subq_24.listing__created_at__extract_month + , subq_24.listing__created_at__extract_day + , subq_24.listing__created_at__extract_dow + , subq_24.listing__created_at__extract_doy + , subq_24.metric_time__day + , subq_24.metric_time__week + , subq_24.metric_time__month + , subq_24.metric_time__quarter + , subq_24.metric_time__year + , subq_24.metric_time__extract_year + , subq_24.metric_time__extract_quarter + , subq_24.metric_time__extract_month + , subq_24.metric_time__extract_day + , subq_24.metric_time__extract_dow + , subq_24.metric_time__extract_doy + , subq_24.listing + , subq_24.user + , subq_24.listing__user + , subq_24.country_latest + , subq_24.is_lux_latest + , subq_24.capacity_latest + , subq_24.listing__country_latest + , subq_24.listing__is_lux_latest + , subq_24.listing__capacity_latest + , subq_24.listing__views_times_booking_value + , subq_24.listings + , subq_24.largest_listing + , subq_24.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_23.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] SELECT - subq_13.listing - , subq_13.listing__views_times_booking_value + subq_22.listing + , subq_22.listing__views_times_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing + subq_21.listing , booking_value * views AS listing__views_times_booking_value FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.booking_value) AS booking_value - , MAX(subq_11.views) AS views + COALESCE(subq_15.listing, subq_20.listing) AS listing + , MAX(subq_15.booking_value) AS booking_value + , MAX(subq_20.views) AS views FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.booking_value + subq_14.listing + , subq_14.booking_value FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.booking_value) AS booking_value + subq_13.listing + , SUM(subq_13.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'listing'] SELECT - subq_3.listing - , subq_3.booking_value + subq_12.listing + , subq_12.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,91 +513,91 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY listing - ) subq_5 - ) subq_6 + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.views + subq_19.listing + , subq_19.views FROM ( -- Aggregate Measures SELECT - subq_9.listing - , SUM(subq_9.views) AS views + subq_18.listing + , SUM(subq_18.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing'] SELECT - subq_8.listing - , subq_8.views + subq_17.listing + , subq_17.views FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.view__ds__day - , subq_7.view__ds__week - , subq_7.view__ds__month - , subq_7.view__ds__quarter - , subq_7.view__ds__year - , subq_7.view__ds__extract_year - , subq_7.view__ds__extract_quarter - , subq_7.view__ds__extract_month - , subq_7.view__ds__extract_day - , subq_7.view__ds__extract_dow - , subq_7.view__ds__extract_doy - , subq_7.view__ds_partitioned__day - , subq_7.view__ds_partitioned__week - , subq_7.view__ds_partitioned__month - , subq_7.view__ds_partitioned__quarter - , subq_7.view__ds_partitioned__year - , subq_7.view__ds_partitioned__extract_year - , subq_7.view__ds_partitioned__extract_quarter - , subq_7.view__ds_partitioned__extract_month - , subq_7.view__ds_partitioned__extract_day - , subq_7.view__ds_partitioned__extract_dow - , subq_7.view__ds_partitioned__extract_doy - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.listing - , subq_7.user - , subq_7.view__listing - , subq_7.view__user - , subq_7.views + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.view__ds__day + , subq_16.view__ds__week + , subq_16.view__ds__month + , subq_16.view__ds__quarter + , subq_16.view__ds__year + , subq_16.view__ds__extract_year + , subq_16.view__ds__extract_quarter + , subq_16.view__ds__extract_month + , subq_16.view__ds__extract_day + , subq_16.view__ds__extract_dow + , subq_16.view__ds__extract_doy + , subq_16.view__ds_partitioned__day + , subq_16.view__ds_partitioned__week + , subq_16.view__ds_partitioned__month + , subq_16.view__ds_partitioned__quarter + , subq_16.view__ds_partitioned__year + , subq_16.view__ds_partitioned__extract_year + , subq_16.view__ds_partitioned__extract_quarter + , subq_16.view__ds_partitioned__extract_month + , subq_16.view__ds_partitioned__extract_day + , subq_16.view__ds_partitioned__extract_dow + , subq_16.view__ds_partitioned__extract_doy + , subq_16.ds__day AS metric_time__day + , subq_16.ds__week AS metric_time__week + , subq_16.ds__month AS metric_time__month + , subq_16.ds__quarter AS metric_time__quarter + , subq_16.ds__year AS metric_time__year + , subq_16.ds__extract_year AS metric_time__extract_year + , subq_16.ds__extract_quarter AS metric_time__extract_quarter + , subq_16.ds__extract_month AS metric_time__extract_month + , subq_16.ds__extract_day AS metric_time__extract_day + , subq_16.ds__extract_dow AS metric_time__extract_dow + , subq_16.ds__extract_doy AS metric_time__extract_doy + , subq_16.listing + , subq_16.user + , subq_16.view__listing + , subq_16.view__user + , subq_16.views FROM ( -- Read Elements From Semantic Model 'views_source' SELECT @@ -651,24 +651,24 @@ FROM ( , views_source_src_28000.listing_id AS view__listing , views_source_src_28000.user_id AS view__user FROM ***************************.fct_views views_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_16 + ) subq_17 + ) subq_18 GROUP BY listing - ) subq_10 - ) subq_11 + ) subq_19 + ) subq_20 ON - subq_6.listing = subq_11.listing + subq_15.listing = subq_20.listing GROUP BY listing - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_21 + ) subq_22 + ) subq_23 ON - subq_1.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_23.listing + ) subq_24 WHERE listing__views_times_booking_value > 1 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_25 + ) subq_26 +) subq_27 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql index f5815e8615..32322e14bd 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_33.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_20.listings AS listings + subq_42.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_29.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 + ) subq_29 LEFT OUTER JOIN ( -- Compute Metrics via Expressions -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] @@ -32,9 +32,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_25.listing, subq_30.listing) AS listing - , MAX(subq_25.booking_value) AS booking_value - , MAX(subq_30.views) AS views + COALESCE(subq_34.listing, subq_39.listing) AS listing + , MAX(subq_34.booking_value) AS booking_value + , MAX(subq_39.views) AS views FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -47,7 +47,7 @@ FROM ( FROM ***************************.fct_bookings bookings_source_src_28000 GROUP BY listing - ) subq_25 + ) subq_34 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -62,17 +62,17 @@ FROM ( listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_28 + ) subq_37 GROUP BY listing - ) subq_30 + ) subq_39 ON - subq_25.listing = subq_30.listing + subq_34.listing = subq_39.listing GROUP BY listing - ) subq_31 - ) subq_33 + ) subq_40 + ) subq_42 ON - subq_20.listing = subq_33.listing -) subq_34 + subq_29.listing = subq_42.listing +) subq_43 WHERE listing__views_times_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql index 56b68827b1..ad4316e9a0 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0.sql @@ -6,229 +6,229 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_17.listings + subq_22.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_16.listings) AS listings + SUM(subq_21.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_15.listings + subq_20.listings FROM ( -- Constrain Output with WHERE SELECT - subq_14.ds__day - , subq_14.ds__week - , subq_14.ds__month - , subq_14.ds__quarter - , subq_14.ds__year - , subq_14.ds__extract_year - , subq_14.ds__extract_quarter - , subq_14.ds__extract_month - , subq_14.ds__extract_day - , subq_14.ds__extract_dow - , subq_14.ds__extract_doy - , subq_14.created_at__day - , subq_14.created_at__week - , subq_14.created_at__month - , subq_14.created_at__quarter - , subq_14.created_at__year - , subq_14.created_at__extract_year - , subq_14.created_at__extract_quarter - , subq_14.created_at__extract_month - , subq_14.created_at__extract_day - , subq_14.created_at__extract_dow - , subq_14.created_at__extract_doy - , subq_14.listing__ds__day - , subq_14.listing__ds__week - , subq_14.listing__ds__month - , subq_14.listing__ds__quarter - , subq_14.listing__ds__year - , subq_14.listing__ds__extract_year - , subq_14.listing__ds__extract_quarter - , subq_14.listing__ds__extract_month - , subq_14.listing__ds__extract_day - , subq_14.listing__ds__extract_dow - , subq_14.listing__ds__extract_doy - , subq_14.listing__created_at__day - , subq_14.listing__created_at__week - , subq_14.listing__created_at__month - , subq_14.listing__created_at__quarter - , subq_14.listing__created_at__year - , subq_14.listing__created_at__extract_year - , subq_14.listing__created_at__extract_quarter - , subq_14.listing__created_at__extract_month - , subq_14.listing__created_at__extract_day - , subq_14.listing__created_at__extract_dow - , subq_14.listing__created_at__extract_doy - , subq_14.metric_time__day - , subq_14.metric_time__week - , subq_14.metric_time__month - , subq_14.metric_time__quarter - , subq_14.metric_time__year - , subq_14.metric_time__extract_year - , subq_14.metric_time__extract_quarter - , subq_14.metric_time__extract_month - , subq_14.metric_time__extract_day - , subq_14.metric_time__extract_dow - , subq_14.metric_time__extract_doy - , subq_14.listing - , subq_14.user - , subq_14.listing__user - , subq_14.country_latest - , subq_14.is_lux_latest - , subq_14.capacity_latest - , subq_14.listing__country_latest - , subq_14.listing__is_lux_latest - , subq_14.listing__capacity_latest - , subq_14.listing__bookings - , subq_14.listing__bookers - , subq_14.listings - , subq_14.largest_listing - , subq_14.smallest_listing + subq_19.ds__day + , subq_19.ds__week + , subq_19.ds__month + , subq_19.ds__quarter + , subq_19.ds__year + , subq_19.ds__extract_year + , subq_19.ds__extract_quarter + , subq_19.ds__extract_month + , subq_19.ds__extract_day + , subq_19.ds__extract_dow + , subq_19.ds__extract_doy + , subq_19.created_at__day + , subq_19.created_at__week + , subq_19.created_at__month + , subq_19.created_at__quarter + , subq_19.created_at__year + , subq_19.created_at__extract_year + , subq_19.created_at__extract_quarter + , subq_19.created_at__extract_month + , subq_19.created_at__extract_day + , subq_19.created_at__extract_dow + , subq_19.created_at__extract_doy + , subq_19.listing__ds__day + , subq_19.listing__ds__week + , subq_19.listing__ds__month + , subq_19.listing__ds__quarter + , subq_19.listing__ds__year + , subq_19.listing__ds__extract_year + , subq_19.listing__ds__extract_quarter + , subq_19.listing__ds__extract_month + , subq_19.listing__ds__extract_day + , subq_19.listing__ds__extract_dow + , subq_19.listing__ds__extract_doy + , subq_19.listing__created_at__day + , subq_19.listing__created_at__week + , subq_19.listing__created_at__month + , subq_19.listing__created_at__quarter + , subq_19.listing__created_at__year + , subq_19.listing__created_at__extract_year + , subq_19.listing__created_at__extract_quarter + , subq_19.listing__created_at__extract_month + , subq_19.listing__created_at__extract_day + , subq_19.listing__created_at__extract_dow + , subq_19.listing__created_at__extract_doy + , subq_19.metric_time__day + , subq_19.metric_time__week + , subq_19.metric_time__month + , subq_19.metric_time__quarter + , subq_19.metric_time__year + , subq_19.metric_time__extract_year + , subq_19.metric_time__extract_quarter + , subq_19.metric_time__extract_month + , subq_19.metric_time__extract_day + , subq_19.metric_time__extract_dow + , subq_19.metric_time__extract_doy + , subq_19.listing + , subq_19.user + , subq_19.listing__user + , subq_19.country_latest + , subq_19.is_lux_latest + , subq_19.capacity_latest + , subq_19.listing__country_latest + , subq_19.listing__is_lux_latest + , subq_19.listing__capacity_latest + , subq_19.listing__bookings + , subq_19.listing__bookers + , subq_19.listings + , subq_19.largest_listing + , subq_19.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_13.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_13.listing__bookings AS listing__bookings + , subq_18.listing__bookers AS listing__bookers + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,129 +289,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_12.listing + , subq_12.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_11.listing + , subq_11.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_10.listing + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_9.listing + , subq_9.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -504,36 +504,36 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_8 + ) subq_9 + ) subq_10 GROUP BY listing - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_11 + ) subq_12 + ) subq_13 ON - subq_1.listing = subq_7.listing + subq_7.listing = subq_13.listing LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_12.listing - , subq_12.listing__bookers + subq_17.listing + , subq_17.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_11.listing - , subq_11.bookers AS listing__bookers + subq_16.listing + , subq_16.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_10.listing - , COUNT(DISTINCT subq_10.bookers) AS bookers + subq_15.listing + , COUNT(DISTINCT subq_15.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_9.listing - , subq_9.bookers + subq_14.listing + , subq_14.bookers FROM ( -- Metric Time Dimension 'ds' SELECT @@ -728,17 +728,17 @@ FROM ( , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 ) subq_8 - ) subq_9 - ) subq_10 + ) subq_14 + ) subq_15 GROUP BY listing - ) subq_11 - ) subq_12 - ) subq_13 + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_1.listing = subq_13.listing - ) subq_14 + subq_7.listing = subq_18.listing + ) subq_19 WHERE listing__bookings > 2 AND listing__bookers > 1 - ) subq_15 - ) subq_16 -) subq_17 + ) subq_20 + ) subq_21 +) subq_22 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql index b03712f85b..f7488a9f89 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql @@ -23,9 +23,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_25.listing__bookings AS listing__bookings - , subq_30.listing__bookers AS listing__bookers - , subq_19.listings AS listings + subq_30.listing__bookings AS listing__bookings + , subq_35.listing__bookers AS listing__bookers + , subq_24.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -33,7 +33,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_19 + ) subq_24 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'listing'] @@ -46,9 +46,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_25 + ) subq_30 ON - subq_19.listing = subq_25.listing + subq_24.listing = subq_30.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -61,8 +61,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_30 + ) subq_35 ON - subq_19.listing = subq_30.listing -) subq_31 + subq_24.listing = subq_35.listing +) subq_36 WHERE listing__bookings > 2 AND listing__bookers > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql index d105813a23..ac5fc8ec08 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_26.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_25.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_24.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__bookings_per_booker - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_23.ds__day + , subq_23.ds__week + , subq_23.ds__month + , subq_23.ds__quarter + , subq_23.ds__year + , subq_23.ds__extract_year + , subq_23.ds__extract_quarter + , subq_23.ds__extract_month + , subq_23.ds__extract_day + , subq_23.ds__extract_dow + , subq_23.ds__extract_doy + , subq_23.created_at__day + , subq_23.created_at__week + , subq_23.created_at__month + , subq_23.created_at__quarter + , subq_23.created_at__year + , subq_23.created_at__extract_year + , subq_23.created_at__extract_quarter + , subq_23.created_at__extract_month + , subq_23.created_at__extract_day + , subq_23.created_at__extract_dow + , subq_23.created_at__extract_doy + , subq_23.listing__ds__day + , subq_23.listing__ds__week + , subq_23.listing__ds__month + , subq_23.listing__ds__quarter + , subq_23.listing__ds__year + , subq_23.listing__ds__extract_year + , subq_23.listing__ds__extract_quarter + , subq_23.listing__ds__extract_month + , subq_23.listing__ds__extract_day + , subq_23.listing__ds__extract_dow + , subq_23.listing__ds__extract_doy + , subq_23.listing__created_at__day + , subq_23.listing__created_at__week + , subq_23.listing__created_at__month + , subq_23.listing__created_at__quarter + , subq_23.listing__created_at__year + , subq_23.listing__created_at__extract_year + , subq_23.listing__created_at__extract_quarter + , subq_23.listing__created_at__extract_month + , subq_23.listing__created_at__extract_day + , subq_23.listing__created_at__extract_dow + , subq_23.listing__created_at__extract_doy + , subq_23.metric_time__day + , subq_23.metric_time__week + , subq_23.metric_time__month + , subq_23.metric_time__quarter + , subq_23.metric_time__year + , subq_23.metric_time__extract_year + , subq_23.metric_time__extract_quarter + , subq_23.metric_time__extract_month + , subq_23.metric_time__extract_day + , subq_23.metric_time__extract_dow + , subq_23.metric_time__extract_doy + , subq_23.listing + , subq_23.user + , subq_23.listing__user + , subq_23.country_latest + , subq_23.is_lux_latest + , subq_23.capacity_latest + , subq_23.listing__country_latest + , subq_23.listing__is_lux_latest + , subq_23.listing__capacity_latest + , subq_23.listing__bookings_per_booker + , subq_23.listings + , subq_23.largest_listing + , subq_23.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__bookings_per_booker AS listing__bookings_per_booker - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_22.listing__bookings_per_booker AS listing__bookings_per_booker + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings_per_booker'] SELECT - subq_13.listing - , subq_13.listing__bookings_per_booker + subq_21.listing + , subq_21.listing__bookings_per_booker FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing - , CAST(subq_12.bookings AS FLOAT64) / CAST(NULLIF(subq_12.bookers, 0) AS FLOAT64) AS listing__bookings_per_booker + subq_20.listing + , CAST(subq_20.bookings AS FLOAT64) / CAST(NULLIF(subq_20.bookers, 0) AS FLOAT64) AS listing__bookings_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.bookings) AS bookings - , MAX(subq_11.bookers) AS bookers + COALESCE(subq_15.listing, subq_19.listing) AS listing + , MAX(subq_15.bookings) AS bookings + , MAX(subq_19.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings + subq_14.listing + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_13.listing + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_12.listing + , subq_12.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,129 +513,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY listing - ) subq_5 - ) subq_6 + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.bookers + subq_18.listing + , subq_18.bookers FROM ( -- Aggregate Measures SELECT - subq_9.listing - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_17.listing + , COUNT(DISTINCT subq_17.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_8.listing - , subq_8.bookers + subq_16.listing + , subq_16.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.paid_at__day - , subq_7.paid_at__week - , subq_7.paid_at__month - , subq_7.paid_at__quarter - , subq_7.paid_at__year - , subq_7.paid_at__extract_year - , subq_7.paid_at__extract_quarter - , subq_7.paid_at__extract_month - , subq_7.paid_at__extract_day - , subq_7.paid_at__extract_dow - , subq_7.paid_at__extract_doy - , subq_7.booking__ds__day - , subq_7.booking__ds__week - , subq_7.booking__ds__month - , subq_7.booking__ds__quarter - , subq_7.booking__ds__year - , subq_7.booking__ds__extract_year - , subq_7.booking__ds__extract_quarter - , subq_7.booking__ds__extract_month - , subq_7.booking__ds__extract_day - , subq_7.booking__ds__extract_dow - , subq_7.booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day - , subq_7.booking__paid_at__week - , subq_7.booking__paid_at__month - , subq_7.booking__paid_at__quarter - , subq_7.booking__paid_at__year - , subq_7.booking__paid_at__extract_year - , subq_7.booking__paid_at__extract_quarter - , subq_7.booking__paid_at__extract_month - , subq_7.booking__paid_at__extract_day - , subq_7.booking__paid_at__extract_dow - , subq_7.booking__paid_at__extract_doy - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.listing - , subq_7.guest - , subq_7.host - , subq_7.booking__listing - , subq_7.booking__guest - , subq_7.booking__host - , subq_7.is_instant - , subq_7.booking__is_instant - , subq_7.bookings - , subq_7.instant_bookings - , subq_7.booking_value - , subq_7.max_booking_value - , subq_7.min_booking_value - , subq_7.bookers - , subq_7.average_booking_value - , subq_7.referred_bookings - , subq_7.median_booking_value - , subq_7.booking_value_p99 - , subq_7.discrete_booking_value_p99 - , subq_7.approximate_continuous_booking_value_p99 - , subq_7.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -728,24 +728,24 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_11 + ) subq_16 + ) subq_17 GROUP BY listing - ) subq_10 - ) subq_11 + ) subq_18 + ) subq_19 ON - subq_6.listing = subq_11.listing + subq_15.listing = subq_19.listing GROUP BY listing - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_20 + ) subq_21 + ) subq_22 ON - subq_1.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_22.listing + ) subq_23 WHERE listing__bookings_per_booker > 1 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_24 + ) subq_25 +) subq_26 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql index f4d3811512..9327cc9bf6 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_ratio_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - CAST(subq_25.bookings AS FLOAT64) / CAST(NULLIF(subq_25.bookers, 0) AS FLOAT64) AS listing__bookings_per_booker - , subq_20.listings AS listings + CAST(subq_33.bookings AS FLOAT64) / CAST(NULLIF(subq_33.bookers, 0) AS FLOAT64) AS listing__bookings_per_booker + , subq_28.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 + ) subq_28 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -39,11 +39,11 @@ FROM ( , 1 AS bookings , guest_id AS bookers FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_23 + ) subq_31 GROUP BY listing - ) subq_25 + ) subq_33 ON - subq_20.listing = subq_25.listing -) subq_28 + subq_28.listing = subq_33.listing +) subq_36 WHERE listing__bookings_per_booker > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql index 5ab72da9b2..cd2c4829fb 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: BigQuery --- -- Compute Metrics via Expressions SELECT - subq_11.listings + subq_14.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_10.listings) AS listings + SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_9.listings + subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.listing__bookings - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.listing__bookings + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,129 +287,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_9.listing + , subq_9.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_8.listing + , subq_8.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_7.listing + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_6.listing + , subq_6.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -502,18 +502,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY listing - ) subq_5 - ) subq_6 - ) subq_7 + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_10.listing + ) subq_11 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_12 + ) subq_13 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql index 1315f9edf3..50a67af5e2 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/BigQuery/test_query_with_simple_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.listing__bookings AS listing__bookings - , subq_13.listings AS listings + subq_22.listing__bookings AS listing__bookings + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -38,11 +38,11 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_16 + ) subq_19 GROUP BY listing - ) subq_19 + ) subq_22 ON - subq_13.listing = subq_19.listing -) subq_20 + subq_16.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql index 4a67c310c5..39a2d05b17 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0.sql @@ -6,21 +6,21 @@ sql_engine: Databricks --- -- Pass Only Elements: ['listing',] SELECT - subq_8.listing + subq_11.listing FROM ( -- Constrain Output with WHERE SELECT - subq_7.listing - , subq_7.lux_listing - , subq_7.listing__lux_listing - , subq_7.listing__bookings + subq_10.listing + , subq_10.lux_listing + , subq_10.listing__lux_listing + , subq_10.listing__bookings FROM ( -- Join Standard Outputs SELECT - subq_6.listing__bookings AS listing__bookings - , subq_0.listing AS listing - , subq_0.lux_listing AS lux_listing - , subq_0.listing__lux_listing AS listing__lux_listing + subq_9.listing__bookings AS listing__bookings + , subq_3.listing AS listing + , subq_3.lux_listing AS lux_listing + , subq_3.listing__lux_listing AS listing__lux_listing FROM ( -- Read Elements From Semantic Model 'lux_listing_mapping' SELECT @@ -28,128 +28,128 @@ FROM ( , lux_listing_mapping_src_28000.lux_listing_id AS lux_listing , lux_listing_mapping_src_28000.lux_listing_id AS listing__lux_listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 - ) subq_0 + ) subq_3 FULL OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_5.listing - , subq_5.listing__bookings + subq_8.listing + , subq_8.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_4.listing - , subq_4.bookings AS listing__bookings + subq_7.listing + , subq_7.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_3.listing - , SUM(subq_3.bookings) AS bookings + subq_6.listing + , SUM(subq_6.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_2.listing - , subq_2.bookings + subq_5.listing + , subq_5.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_1.ds__day - , subq_1.ds__week - , subq_1.ds__month - , subq_1.ds__quarter - , subq_1.ds__year - , subq_1.ds__extract_year - , subq_1.ds__extract_quarter - , subq_1.ds__extract_month - , subq_1.ds__extract_day - , subq_1.ds__extract_dow - , subq_1.ds__extract_doy - , subq_1.ds_partitioned__day - , subq_1.ds_partitioned__week - , subq_1.ds_partitioned__month - , subq_1.ds_partitioned__quarter - , subq_1.ds_partitioned__year - , subq_1.ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy - , subq_1.paid_at__day - , subq_1.paid_at__week - , subq_1.paid_at__month - , subq_1.paid_at__quarter - , subq_1.paid_at__year - , subq_1.paid_at__extract_year - , subq_1.paid_at__extract_quarter - , subq_1.paid_at__extract_month - , subq_1.paid_at__extract_day - , subq_1.paid_at__extract_dow - , subq_1.paid_at__extract_doy - , subq_1.booking__ds__day - , subq_1.booking__ds__week - , subq_1.booking__ds__month - , subq_1.booking__ds__quarter - , subq_1.booking__ds__year - , subq_1.booking__ds__extract_year - , subq_1.booking__ds__extract_quarter - , subq_1.booking__ds__extract_month - , subq_1.booking__ds__extract_day - , subq_1.booking__ds__extract_dow - , subq_1.booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day - , subq_1.booking__paid_at__week - , subq_1.booking__paid_at__month - , subq_1.booking__paid_at__quarter - , subq_1.booking__paid_at__year - , subq_1.booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy - , subq_1.ds__day AS metric_time__day - , subq_1.ds__week AS metric_time__week - , subq_1.ds__month AS metric_time__month - , subq_1.ds__quarter AS metric_time__quarter - , subq_1.ds__year AS metric_time__year - , subq_1.ds__extract_year AS metric_time__extract_year - , subq_1.ds__extract_quarter AS metric_time__extract_quarter - , subq_1.ds__extract_month AS metric_time__extract_month - , subq_1.ds__extract_day AS metric_time__extract_day - , subq_1.ds__extract_dow AS metric_time__extract_dow - , subq_1.ds__extract_doy AS metric_time__extract_doy - , subq_1.listing - , subq_1.guest - , subq_1.host - , subq_1.booking__listing - , subq_1.booking__guest - , subq_1.booking__host - , subq_1.is_instant - , subq_1.booking__is_instant - , subq_1.bookings - , subq_1.instant_bookings - , subq_1.booking_value - , subq_1.max_booking_value - , subq_1.min_booking_value - , subq_1.bookers - , subq_1.average_booking_value - , subq_1.referred_bookings - , subq_1.median_booking_value - , subq_1.booking_value_p99 - , subq_1.discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 + subq_4.ds__day + , subq_4.ds__week + , subq_4.ds__month + , subq_4.ds__quarter + , subq_4.ds__year + , subq_4.ds__extract_year + , subq_4.ds__extract_quarter + , subq_4.ds__extract_month + , subq_4.ds__extract_day + , subq_4.ds__extract_dow + , subq_4.ds__extract_doy + , subq_4.ds_partitioned__day + , subq_4.ds_partitioned__week + , subq_4.ds_partitioned__month + , subq_4.ds_partitioned__quarter + , subq_4.ds_partitioned__year + , subq_4.ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy + , subq_4.paid_at__day + , subq_4.paid_at__week + , subq_4.paid_at__month + , subq_4.paid_at__quarter + , subq_4.paid_at__year + , subq_4.paid_at__extract_year + , subq_4.paid_at__extract_quarter + , subq_4.paid_at__extract_month + , subq_4.paid_at__extract_day + , subq_4.paid_at__extract_dow + , subq_4.paid_at__extract_doy + , subq_4.booking__ds__day + , subq_4.booking__ds__week + , subq_4.booking__ds__month + , subq_4.booking__ds__quarter + , subq_4.booking__ds__year + , subq_4.booking__ds__extract_year + , subq_4.booking__ds__extract_quarter + , subq_4.booking__ds__extract_month + , subq_4.booking__ds__extract_day + , subq_4.booking__ds__extract_dow + , subq_4.booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day + , subq_4.booking__paid_at__week + , subq_4.booking__paid_at__month + , subq_4.booking__paid_at__quarter + , subq_4.booking__paid_at__year + , subq_4.booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy + , subq_4.ds__day AS metric_time__day + , subq_4.ds__week AS metric_time__week + , subq_4.ds__month AS metric_time__month + , subq_4.ds__quarter AS metric_time__quarter + , subq_4.ds__year AS metric_time__year + , subq_4.ds__extract_year AS metric_time__extract_year + , subq_4.ds__extract_quarter AS metric_time__extract_quarter + , subq_4.ds__extract_month AS metric_time__extract_month + , subq_4.ds__extract_day AS metric_time__extract_day + , subq_4.ds__extract_dow AS metric_time__extract_dow + , subq_4.ds__extract_doy AS metric_time__extract_doy + , subq_4.listing + , subq_4.guest + , subq_4.host + , subq_4.booking__listing + , subq_4.booking__guest + , subq_4.booking__host + , subq_4.is_instant + , subq_4.booking__is_instant + , subq_4.bookings + , subq_4.instant_bookings + , subq_4.booking_value + , subq_4.max_booking_value + , subq_4.min_booking_value + , subq_4.bookers + , subq_4.average_booking_value + , subq_4.referred_bookings + , subq_4.median_booking_value + , subq_4.booking_value_p99 + , subq_4.discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -242,18 +242,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_1 - ) subq_2 - ) subq_3 + ) subq_4 + ) subq_5 + ) subq_6 GROUP BY - subq_3.listing - ) subq_4 - ) subq_5 - ) subq_6 + subq_6.listing + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_0.listing = subq_6.listing - ) subq_7 + subq_3.listing = subq_9.listing + ) subq_10 WHERE listing__bookings > 2 -) subq_8 +) subq_11 GROUP BY - subq_8.listing + subq_11.listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql index af1b033850..ef37a6f02a 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_distinct_values_query_with_metric_filter__plan0_optimized.sql @@ -11,7 +11,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_15.listing__bookings AS listing__bookings + subq_18.listing__bookings AS listing__bookings , lux_listing_mapping_src_28000.listing_id AS listing FROM ***************************.dim_lux_listing_id_mapping lux_listing_mapping_src_28000 FULL OUTER JOIN ( @@ -29,13 +29,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_12 + ) subq_15 GROUP BY listing - ) subq_15 + ) subq_18 ON - lux_listing_mapping_src_28000.listing_id = subq_15.listing -) subq_16 + lux_listing_mapping_src_28000.listing_id = subq_18.listing +) subq_19 WHERE listing__bookings > 2 GROUP BY listing diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql index 2264590cad..a0683c32f6 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0.sql @@ -6,320 +6,320 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.guest__booking_value - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.guest__booking_value + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.guest__booking_value AS guest__booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.guest__booking_value AS guest__booking_value + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['guest', 'guest__booking_value'] SELECT - subq_6.guest - , subq_6.guest__booking_value + subq_8.guest + , subq_8.guest__booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_5.guest - , subq_5.booking_value AS guest__booking_value + subq_7.guest + , subq_7.booking_value AS guest__booking_value FROM ( -- Aggregate Measures SELECT - subq_4.guest - , SUM(subq_4.booking_value) AS booking_value + subq_6.guest + , SUM(subq_6.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'guest'] SELECT - subq_3.guest - , subq_3.booking_value + subq_5.guest + , subq_5.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY - subq_4.guest - ) subq_5 - ) subq_6 - ) subq_7 + subq_6.guest + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.guest = subq_7.guest - ) subq_8 + subq_4.guest = subq_9.guest + ) subq_10 WHERE guest__booking_value > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql index 61097bd5a8..cff4985d06 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_by_metric_in_same_semantic_model_as_queried_metric__plan0_optimized.sql @@ -23,15 +23,16 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.guest__booking_value AS guest__booking_value - , subq_13.bookers AS bookers + subq_20.guest__booking_value AS guest__booking_value + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT guest + , booking_value , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['booking_value', 'guest'] @@ -44,8 +45,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY guest - ) subq_18 + ) subq_20 ON - subq_13.guest = subq_18.guest -) subq_19 + subq_15.guest = subq_20.guest +) subq_21 WHERE guest__booking_value > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0.sql index 93c3fc2851..6f8da601be 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0.sql @@ -4,227 +4,227 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_22.listings + subq_33.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_21.listings) AS listings + SUM(subq_32.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_20.listings + subq_31.listings FROM ( -- Constrain Output with WHERE SELECT - subq_19.ds__day - , subq_19.ds__week - , subq_19.ds__month - , subq_19.ds__quarter - , subq_19.ds__year - , subq_19.ds__extract_year - , subq_19.ds__extract_quarter - , subq_19.ds__extract_month - , subq_19.ds__extract_day - , subq_19.ds__extract_dow - , subq_19.ds__extract_doy - , subq_19.created_at__day - , subq_19.created_at__week - , subq_19.created_at__month - , subq_19.created_at__quarter - , subq_19.created_at__year - , subq_19.created_at__extract_year - , subq_19.created_at__extract_quarter - , subq_19.created_at__extract_month - , subq_19.created_at__extract_day - , subq_19.created_at__extract_dow - , subq_19.created_at__extract_doy - , subq_19.listing__ds__day - , subq_19.listing__ds__week - , subq_19.listing__ds__month - , subq_19.listing__ds__quarter - , subq_19.listing__ds__year - , subq_19.listing__ds__extract_year - , subq_19.listing__ds__extract_quarter - , subq_19.listing__ds__extract_month - , subq_19.listing__ds__extract_day - , subq_19.listing__ds__extract_dow - , subq_19.listing__ds__extract_doy - , subq_19.listing__created_at__day - , subq_19.listing__created_at__week - , subq_19.listing__created_at__month - , subq_19.listing__created_at__quarter - , subq_19.listing__created_at__year - , subq_19.listing__created_at__extract_year - , subq_19.listing__created_at__extract_quarter - , subq_19.listing__created_at__extract_month - , subq_19.listing__created_at__extract_day - , subq_19.listing__created_at__extract_dow - , subq_19.listing__created_at__extract_doy - , subq_19.metric_time__day - , subq_19.metric_time__week - , subq_19.metric_time__month - , subq_19.metric_time__quarter - , subq_19.metric_time__year - , subq_19.metric_time__extract_year - , subq_19.metric_time__extract_quarter - , subq_19.metric_time__extract_month - , subq_19.metric_time__extract_day - , subq_19.metric_time__extract_dow - , subq_19.metric_time__extract_doy - , subq_19.listing - , subq_19.user - , subq_19.listing__user - , subq_19.country_latest - , subq_19.is_lux_latest - , subq_19.capacity_latest - , subq_19.listing__country_latest - , subq_19.listing__is_lux_latest - , subq_19.listing__capacity_latest - , subq_19.user__visit_buy_conversion_rate - , subq_19.listings - , subq_19.largest_listing - , subq_19.smallest_listing + subq_30.ds__day + , subq_30.ds__week + , subq_30.ds__month + , subq_30.ds__quarter + , subq_30.ds__year + , subq_30.ds__extract_year + , subq_30.ds__extract_quarter + , subq_30.ds__extract_month + , subq_30.ds__extract_day + , subq_30.ds__extract_dow + , subq_30.ds__extract_doy + , subq_30.created_at__day + , subq_30.created_at__week + , subq_30.created_at__month + , subq_30.created_at__quarter + , subq_30.created_at__year + , subq_30.created_at__extract_year + , subq_30.created_at__extract_quarter + , subq_30.created_at__extract_month + , subq_30.created_at__extract_day + , subq_30.created_at__extract_dow + , subq_30.created_at__extract_doy + , subq_30.listing__ds__day + , subq_30.listing__ds__week + , subq_30.listing__ds__month + , subq_30.listing__ds__quarter + , subq_30.listing__ds__year + , subq_30.listing__ds__extract_year + , subq_30.listing__ds__extract_quarter + , subq_30.listing__ds__extract_month + , subq_30.listing__ds__extract_day + , subq_30.listing__ds__extract_dow + , subq_30.listing__ds__extract_doy + , subq_30.listing__created_at__day + , subq_30.listing__created_at__week + , subq_30.listing__created_at__month + , subq_30.listing__created_at__quarter + , subq_30.listing__created_at__year + , subq_30.listing__created_at__extract_year + , subq_30.listing__created_at__extract_quarter + , subq_30.listing__created_at__extract_month + , subq_30.listing__created_at__extract_day + , subq_30.listing__created_at__extract_dow + , subq_30.listing__created_at__extract_doy + , subq_30.metric_time__day + , subq_30.metric_time__week + , subq_30.metric_time__month + , subq_30.metric_time__quarter + , subq_30.metric_time__year + , subq_30.metric_time__extract_year + , subq_30.metric_time__extract_quarter + , subq_30.metric_time__extract_month + , subq_30.metric_time__extract_day + , subq_30.metric_time__extract_dow + , subq_30.metric_time__extract_doy + , subq_30.listing + , subq_30.user + , subq_30.listing__user + , subq_30.country_latest + , subq_30.is_lux_latest + , subq_30.capacity_latest + , subq_30.listing__country_latest + , subq_30.listing__is_lux_latest + , subq_30.listing__capacity_latest + , subq_30.user__visit_buy_conversion_rate + , subq_30.listings + , subq_30.largest_listing + , subq_30.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_18.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_29.user__visit_buy_conversion_rate AS user__visit_buy_conversion_rate + , subq_13.ds__day AS ds__day + , subq_13.ds__week AS ds__week + , subq_13.ds__month AS ds__month + , subq_13.ds__quarter AS ds__quarter + , subq_13.ds__year AS ds__year + , subq_13.ds__extract_year AS ds__extract_year + , subq_13.ds__extract_quarter AS ds__extract_quarter + , subq_13.ds__extract_month AS ds__extract_month + , subq_13.ds__extract_day AS ds__extract_day + , subq_13.ds__extract_dow AS ds__extract_dow + , subq_13.ds__extract_doy AS ds__extract_doy + , subq_13.created_at__day AS created_at__day + , subq_13.created_at__week AS created_at__week + , subq_13.created_at__month AS created_at__month + , subq_13.created_at__quarter AS created_at__quarter + , subq_13.created_at__year AS created_at__year + , subq_13.created_at__extract_year AS created_at__extract_year + , subq_13.created_at__extract_quarter AS created_at__extract_quarter + , subq_13.created_at__extract_month AS created_at__extract_month + , subq_13.created_at__extract_day AS created_at__extract_day + , subq_13.created_at__extract_dow AS created_at__extract_dow + , subq_13.created_at__extract_doy AS created_at__extract_doy + , subq_13.listing__ds__day AS listing__ds__day + , subq_13.listing__ds__week AS listing__ds__week + , subq_13.listing__ds__month AS listing__ds__month + , subq_13.listing__ds__quarter AS listing__ds__quarter + , subq_13.listing__ds__year AS listing__ds__year + , subq_13.listing__ds__extract_year AS listing__ds__extract_year + , subq_13.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_13.listing__ds__extract_month AS listing__ds__extract_month + , subq_13.listing__ds__extract_day AS listing__ds__extract_day + , subq_13.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_13.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_13.listing__created_at__day AS listing__created_at__day + , subq_13.listing__created_at__week AS listing__created_at__week + , subq_13.listing__created_at__month AS listing__created_at__month + , subq_13.listing__created_at__quarter AS listing__created_at__quarter + , subq_13.listing__created_at__year AS listing__created_at__year + , subq_13.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_13.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_13.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_13.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_13.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_13.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_13.metric_time__day AS metric_time__day + , subq_13.metric_time__week AS metric_time__week + , subq_13.metric_time__month AS metric_time__month + , subq_13.metric_time__quarter AS metric_time__quarter + , subq_13.metric_time__year AS metric_time__year + , subq_13.metric_time__extract_year AS metric_time__extract_year + , subq_13.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_13.metric_time__extract_month AS metric_time__extract_month + , subq_13.metric_time__extract_day AS metric_time__extract_day + , subq_13.metric_time__extract_dow AS metric_time__extract_dow + , subq_13.metric_time__extract_doy AS metric_time__extract_doy + , subq_13.listing AS listing + , subq_13.user AS user + , subq_13.listing__user AS listing__user + , subq_13.country_latest AS country_latest + , subq_13.is_lux_latest AS is_lux_latest + , subq_13.capacity_latest AS capacity_latest + , subq_13.listing__country_latest AS listing__country_latest + , subq_13.listing__is_lux_latest AS listing__is_lux_latest + , subq_13.listing__capacity_latest AS listing__capacity_latest + , subq_13.listings AS listings + , subq_13.largest_listing AS largest_listing + , subq_13.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_12.ds__day + , subq_12.ds__week + , subq_12.ds__month + , subq_12.ds__quarter + , subq_12.ds__year + , subq_12.ds__extract_year + , subq_12.ds__extract_quarter + , subq_12.ds__extract_month + , subq_12.ds__extract_day + , subq_12.ds__extract_dow + , subq_12.ds__extract_doy + , subq_12.created_at__day + , subq_12.created_at__week + , subq_12.created_at__month + , subq_12.created_at__quarter + , subq_12.created_at__year + , subq_12.created_at__extract_year + , subq_12.created_at__extract_quarter + , subq_12.created_at__extract_month + , subq_12.created_at__extract_day + , subq_12.created_at__extract_dow + , subq_12.created_at__extract_doy + , subq_12.listing__ds__day + , subq_12.listing__ds__week + , subq_12.listing__ds__month + , subq_12.listing__ds__quarter + , subq_12.listing__ds__year + , subq_12.listing__ds__extract_year + , subq_12.listing__ds__extract_quarter + , subq_12.listing__ds__extract_month + , subq_12.listing__ds__extract_day + , subq_12.listing__ds__extract_dow + , subq_12.listing__ds__extract_doy + , subq_12.listing__created_at__day + , subq_12.listing__created_at__week + , subq_12.listing__created_at__month + , subq_12.listing__created_at__quarter + , subq_12.listing__created_at__year + , subq_12.listing__created_at__extract_year + , subq_12.listing__created_at__extract_quarter + , subq_12.listing__created_at__extract_month + , subq_12.listing__created_at__extract_day + , subq_12.listing__created_at__extract_dow + , subq_12.listing__created_at__extract_doy + , subq_12.ds__day AS metric_time__day + , subq_12.ds__week AS metric_time__week + , subq_12.ds__month AS metric_time__month + , subq_12.ds__quarter AS metric_time__quarter + , subq_12.ds__year AS metric_time__year + , subq_12.ds__extract_year AS metric_time__extract_year + , subq_12.ds__extract_quarter AS metric_time__extract_quarter + , subq_12.ds__extract_month AS metric_time__extract_month + , subq_12.ds__extract_day AS metric_time__extract_day + , subq_12.ds__extract_dow AS metric_time__extract_dow + , subq_12.ds__extract_doy AS metric_time__extract_doy + , subq_12.listing + , subq_12.user + , subq_12.listing__user + , subq_12.country_latest + , subq_12.is_lux_latest + , subq_12.capacity_latest + , subq_12.listing__country_latest + , subq_12.listing__is_lux_latest + , subq_12.listing__capacity_latest + , subq_12.listings + , subq_12.largest_listing + , subq_12.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -285,78 +285,78 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_12 + ) subq_13 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__visit_buy_conversion_rate'] SELECT - subq_17.user - , subq_17.user__visit_buy_conversion_rate + subq_28.user + , subq_28.user__visit_buy_conversion_rate FROM ( -- Compute Metrics via Expressions SELECT - subq_16.user - , CAST(subq_16.buys AS DOUBLE) / CAST(NULLIF(subq_16.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate + subq_27.user + , CAST(subq_27.buys AS DOUBLE) / CAST(NULLIF(subq_27.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_5.user, subq_15.user) AS user - , MAX(subq_5.visits) AS visits - , MAX(subq_15.buys) AS buys + COALESCE(subq_17.user, subq_26.user) AS user + , MAX(subq_17.visits) AS visits + , MAX(subq_26.buys) AS buys FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.visits) AS visits + subq_16.user + , SUM(subq_16.visits) AS visits FROM ( -- Pass Only Elements: ['visits', 'user'] SELECT - subq_3.user - , subq_3.visits + subq_15.user + , subq_15.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.visit__ds__day - , subq_2.visit__ds__week - , subq_2.visit__ds__month - , subq_2.visit__ds__quarter - , subq_2.visit__ds__year - , subq_2.visit__ds__extract_year - , subq_2.visit__ds__extract_quarter - , subq_2.visit__ds__extract_month - , subq_2.visit__ds__extract_day - , subq_2.visit__ds__extract_dow - , subq_2.visit__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.session - , subq_2.visit__user - , subq_2.visit__session - , subq_2.referrer_id - , subq_2.visit__referrer_id - , subq_2.visits - , subq_2.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -391,108 +391,108 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_14 + ) subq_15 + ) subq_16 GROUP BY - subq_4.user - ) subq_5 + subq_16.user + ) subq_17 FULL OUTER JOIN ( -- Aggregate Measures SELECT - subq_14.user - , SUM(subq_14.buys) AS buys + subq_25.user + , SUM(subq_25.buys) AS buys FROM ( -- Pass Only Elements: ['buys', 'user'] SELECT - subq_13.user - , subq_13.buys + subq_24.user + , subq_24.buys FROM ( -- Find conversions for user within the range of INF SELECT - subq_12.metric_time__day - , subq_12.user - , subq_12.buys - , subq_12.visits + subq_23.metric_time__day + , subq_23.user + , subq_23.buys + , subq_23.visits FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT - FIRST_VALUE(subq_8.visits) OVER ( + FIRST_VALUE(subq_19.visits) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits - , FIRST_VALUE(subq_8.metric_time__day) OVER ( + , FIRST_VALUE(subq_19.metric_time__day) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day - , FIRST_VALUE(subq_8.user) OVER ( + , FIRST_VALUE(subq_19.user) OVER ( PARTITION BY - subq_11.user - , subq_11.metric_time__day - , subq_11.mf_internal_uuid - ORDER BY subq_8.metric_time__day DESC + subq_22.user + , subq_22.metric_time__day + , subq_22.mf_internal_uuid + ORDER BY subq_19.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_11.mf_internal_uuid AS mf_internal_uuid - , subq_11.buys AS buys + , subq_22.mf_internal_uuid AS mf_internal_uuid + , subq_22.buys AS buys FROM ( -- Pass Only Elements: ['visits', 'metric_time__day', 'user'] SELECT - subq_7.metric_time__day - , subq_7.user - , subq_7.visits + subq_18.metric_time__day + , subq_18.user + , subq_18.visits FROM ( -- Metric Time Dimension 'ds' SELECT - subq_6.ds__day - , subq_6.ds__week - , subq_6.ds__month - , subq_6.ds__quarter - , subq_6.ds__year - , subq_6.ds__extract_year - , subq_6.ds__extract_quarter - , subq_6.ds__extract_month - , subq_6.ds__extract_day - , subq_6.ds__extract_dow - , subq_6.ds__extract_doy - , subq_6.visit__ds__day - , subq_6.visit__ds__week - , subq_6.visit__ds__month - , subq_6.visit__ds__quarter - , subq_6.visit__ds__year - , subq_6.visit__ds__extract_year - , subq_6.visit__ds__extract_quarter - , subq_6.visit__ds__extract_month - , subq_6.visit__ds__extract_day - , subq_6.visit__ds__extract_dow - , subq_6.visit__ds__extract_doy - , subq_6.ds__day AS metric_time__day - , subq_6.ds__week AS metric_time__week - , subq_6.ds__month AS metric_time__month - , subq_6.ds__quarter AS metric_time__quarter - , subq_6.ds__year AS metric_time__year - , subq_6.ds__extract_year AS metric_time__extract_year - , subq_6.ds__extract_quarter AS metric_time__extract_quarter - , subq_6.ds__extract_month AS metric_time__extract_month - , subq_6.ds__extract_day AS metric_time__extract_day - , subq_6.ds__extract_dow AS metric_time__extract_dow - , subq_6.ds__extract_doy AS metric_time__extract_doy - , subq_6.user - , subq_6.session - , subq_6.visit__user - , subq_6.visit__session - , subq_6.referrer_id - , subq_6.visit__referrer_id - , subq_6.visits - , subq_6.visitors + subq_14.ds__day + , subq_14.ds__week + , subq_14.ds__month + , subq_14.ds__quarter + , subq_14.ds__year + , subq_14.ds__extract_year + , subq_14.ds__extract_quarter + , subq_14.ds__extract_month + , subq_14.ds__extract_day + , subq_14.ds__extract_dow + , subq_14.ds__extract_doy + , subq_14.visit__ds__day + , subq_14.visit__ds__week + , subq_14.visit__ds__month + , subq_14.visit__ds__quarter + , subq_14.visit__ds__year + , subq_14.visit__ds__extract_year + , subq_14.visit__ds__extract_quarter + , subq_14.visit__ds__extract_month + , subq_14.visit__ds__extract_day + , subq_14.visit__ds__extract_dow + , subq_14.visit__ds__extract_doy + , subq_14.ds__day AS metric_time__day + , subq_14.ds__week AS metric_time__week + , subq_14.ds__month AS metric_time__month + , subq_14.ds__quarter AS metric_time__quarter + , subq_14.ds__year AS metric_time__year + , subq_14.ds__extract_year AS metric_time__extract_year + , subq_14.ds__extract_quarter AS metric_time__extract_quarter + , subq_14.ds__extract_month AS metric_time__extract_month + , subq_14.ds__extract_day AS metric_time__extract_day + , subq_14.ds__extract_dow AS metric_time__extract_dow + , subq_14.ds__extract_doy AS metric_time__extract_doy + , subq_14.user + , subq_14.session + , subq_14.visit__user + , subq_14.visit__session + , subq_14.referrer_id + , subq_14.visit__referrer_id + , subq_14.visits + , subq_14.visitors FROM ( -- Read Elements From Semantic Model 'visits_source' SELECT @@ -527,118 +527,118 @@ FROM ( , visits_source_src_28000.user_id AS visit__user , visits_source_src_28000.session_id AS visit__session FROM ***************************.fct_visits visits_source_src_28000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_14 + ) subq_18 + ) subq_19 INNER JOIN ( -- Add column with generated UUID SELECT - subq_10.ds__day - , subq_10.ds__week - , subq_10.ds__month - , subq_10.ds__quarter - , subq_10.ds__year - , subq_10.ds__extract_year - , subq_10.ds__extract_quarter - , subq_10.ds__extract_month - , subq_10.ds__extract_day - , subq_10.ds__extract_dow - , subq_10.ds__extract_doy - , subq_10.ds_month__month - , subq_10.ds_month__quarter - , subq_10.ds_month__year - , subq_10.ds_month__extract_year - , subq_10.ds_month__extract_quarter - , subq_10.ds_month__extract_month - , subq_10.buy__ds__day - , subq_10.buy__ds__week - , subq_10.buy__ds__month - , subq_10.buy__ds__quarter - , subq_10.buy__ds__year - , subq_10.buy__ds__extract_year - , subq_10.buy__ds__extract_quarter - , subq_10.buy__ds__extract_month - , subq_10.buy__ds__extract_day - , subq_10.buy__ds__extract_dow - , subq_10.buy__ds__extract_doy - , subq_10.buy__ds_month__month - , subq_10.buy__ds_month__quarter - , subq_10.buy__ds_month__year - , subq_10.buy__ds_month__extract_year - , subq_10.buy__ds_month__extract_quarter - , subq_10.buy__ds_month__extract_month - , subq_10.metric_time__day - , subq_10.metric_time__week - , subq_10.metric_time__month - , subq_10.metric_time__quarter - , subq_10.metric_time__year - , subq_10.metric_time__extract_year - , subq_10.metric_time__extract_quarter - , subq_10.metric_time__extract_month - , subq_10.metric_time__extract_day - , subq_10.metric_time__extract_dow - , subq_10.metric_time__extract_doy - , subq_10.user - , subq_10.session_id - , subq_10.buy__user - , subq_10.buy__session_id - , subq_10.buys - , subq_10.buyers + subq_21.ds__day + , subq_21.ds__week + , subq_21.ds__month + , subq_21.ds__quarter + , subq_21.ds__year + , subq_21.ds__extract_year + , subq_21.ds__extract_quarter + , subq_21.ds__extract_month + , subq_21.ds__extract_day + , subq_21.ds__extract_dow + , subq_21.ds__extract_doy + , subq_21.ds_month__month + , subq_21.ds_month__quarter + , subq_21.ds_month__year + , subq_21.ds_month__extract_year + , subq_21.ds_month__extract_quarter + , subq_21.ds_month__extract_month + , subq_21.buy__ds__day + , subq_21.buy__ds__week + , subq_21.buy__ds__month + , subq_21.buy__ds__quarter + , subq_21.buy__ds__year + , subq_21.buy__ds__extract_year + , subq_21.buy__ds__extract_quarter + , subq_21.buy__ds__extract_month + , subq_21.buy__ds__extract_day + , subq_21.buy__ds__extract_dow + , subq_21.buy__ds__extract_doy + , subq_21.buy__ds_month__month + , subq_21.buy__ds_month__quarter + , subq_21.buy__ds_month__year + , subq_21.buy__ds_month__extract_year + , subq_21.buy__ds_month__extract_quarter + , subq_21.buy__ds_month__extract_month + , subq_21.metric_time__day + , subq_21.metric_time__week + , subq_21.metric_time__month + , subq_21.metric_time__quarter + , subq_21.metric_time__year + , subq_21.metric_time__extract_year + , subq_21.metric_time__extract_quarter + , subq_21.metric_time__extract_month + , subq_21.metric_time__extract_day + , subq_21.metric_time__extract_dow + , subq_21.metric_time__extract_doy + , subq_21.user + , subq_21.session_id + , subq_21.buy__user + , subq_21.buy__session_id + , subq_21.buys + , subq_21.buyers , UUID() AS mf_internal_uuid FROM ( -- Metric Time Dimension 'ds' SELECT - subq_9.ds__day - , subq_9.ds__week - , subq_9.ds__month - , subq_9.ds__quarter - , subq_9.ds__year - , subq_9.ds__extract_year - , subq_9.ds__extract_quarter - , subq_9.ds__extract_month - , subq_9.ds__extract_day - , subq_9.ds__extract_dow - , subq_9.ds__extract_doy - , subq_9.ds_month__month - , subq_9.ds_month__quarter - , subq_9.ds_month__year - , subq_9.ds_month__extract_year - , subq_9.ds_month__extract_quarter - , subq_9.ds_month__extract_month - , subq_9.buy__ds__day - , subq_9.buy__ds__week - , subq_9.buy__ds__month - , subq_9.buy__ds__quarter - , subq_9.buy__ds__year - , subq_9.buy__ds__extract_year - , subq_9.buy__ds__extract_quarter - , subq_9.buy__ds__extract_month - , subq_9.buy__ds__extract_day - , subq_9.buy__ds__extract_dow - , subq_9.buy__ds__extract_doy - , subq_9.buy__ds_month__month - , subq_9.buy__ds_month__quarter - , subq_9.buy__ds_month__year - , subq_9.buy__ds_month__extract_year - , subq_9.buy__ds_month__extract_quarter - , subq_9.buy__ds_month__extract_month - , subq_9.ds__day AS metric_time__day - , subq_9.ds__week AS metric_time__week - , subq_9.ds__month AS metric_time__month - , subq_9.ds__quarter AS metric_time__quarter - , subq_9.ds__year AS metric_time__year - , subq_9.ds__extract_year AS metric_time__extract_year - , subq_9.ds__extract_quarter AS metric_time__extract_quarter - , subq_9.ds__extract_month AS metric_time__extract_month - , subq_9.ds__extract_day AS metric_time__extract_day - , subq_9.ds__extract_dow AS metric_time__extract_dow - , subq_9.ds__extract_doy AS metric_time__extract_doy - , subq_9.user - , subq_9.session_id - , subq_9.buy__user - , subq_9.buy__session_id - , subq_9.buys - , subq_9.buyers + subq_20.ds__day + , subq_20.ds__week + , subq_20.ds__month + , subq_20.ds__quarter + , subq_20.ds__year + , subq_20.ds__extract_year + , subq_20.ds__extract_quarter + , subq_20.ds__extract_month + , subq_20.ds__extract_day + , subq_20.ds__extract_dow + , subq_20.ds__extract_doy + , subq_20.ds_month__month + , subq_20.ds_month__quarter + , subq_20.ds_month__year + , subq_20.ds_month__extract_year + , subq_20.ds_month__extract_quarter + , subq_20.ds_month__extract_month + , subq_20.buy__ds__day + , subq_20.buy__ds__week + , subq_20.buy__ds__month + , subq_20.buy__ds__quarter + , subq_20.buy__ds__year + , subq_20.buy__ds__extract_year + , subq_20.buy__ds__extract_quarter + , subq_20.buy__ds__extract_month + , subq_20.buy__ds__extract_day + , subq_20.buy__ds__extract_dow + , subq_20.buy__ds__extract_doy + , subq_20.buy__ds_month__month + , subq_20.buy__ds_month__quarter + , subq_20.buy__ds_month__year + , subq_20.buy__ds_month__extract_year + , subq_20.buy__ds_month__extract_quarter + , subq_20.buy__ds_month__extract_month + , subq_20.ds__day AS metric_time__day + , subq_20.ds__week AS metric_time__week + , subq_20.ds__month AS metric_time__month + , subq_20.ds__quarter AS metric_time__quarter + , subq_20.ds__year AS metric_time__year + , subq_20.ds__extract_year AS metric_time__extract_year + , subq_20.ds__extract_quarter AS metric_time__extract_quarter + , subq_20.ds__extract_month AS metric_time__extract_month + , subq_20.ds__extract_day AS metric_time__extract_day + , subq_20.ds__extract_dow AS metric_time__extract_dow + , subq_20.ds__extract_doy AS metric_time__extract_doy + , subq_20.user + , subq_20.session_id + , subq_20.buy__user + , subq_20.buy__session_id + , subq_20.buys + , subq_20.buyers FROM ( -- Read Elements From Semantic Model 'buys_source' SELECT @@ -684,32 +684,32 @@ FROM ( , buys_source_src_28000.user_id AS buy__user , buys_source_src_28000.session_id AS buy__session_id FROM ***************************.fct_buys buys_source_src_28000 - ) subq_9 - ) subq_10 - ) subq_11 + ) subq_20 + ) subq_21 + ) subq_22 ON ( - subq_8.user = subq_11.user + subq_19.user = subq_22.user ) AND ( - (subq_8.metric_time__day <= subq_11.metric_time__day) + (subq_19.metric_time__day <= subq_22.metric_time__day) ) - ) subq_12 - ) subq_13 - ) subq_14 + ) subq_23 + ) subq_24 + ) subq_25 GROUP BY - subq_14.user - ) subq_15 + subq_25.user + ) subq_26 ON - subq_5.user = subq_15.user + subq_17.user = subq_26.user GROUP BY - COALESCE(subq_5.user, subq_15.user) - ) subq_16 - ) subq_17 - ) subq_18 + COALESCE(subq_17.user, subq_26.user) + ) subq_27 + ) subq_28 + ) subq_29 ON - subq_1.user = subq_18.user - ) subq_19 + subq_13.user = subq_29.user + ) subq_30 WHERE user__visit_buy_conversion_rate > 2 - ) subq_20 - ) subq_21 -) subq_22 + ) subq_31 + ) subq_32 +) subq_33 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0_optimized.sql index 7abd182a5a..2c533faae9 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_filter_with_conversion_metric__plan0_optimized.sql @@ -21,8 +21,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - CAST(subq_38.buys AS DOUBLE) / CAST(NULLIF(subq_38.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate - , subq_24.listings AS listings + CAST(subq_49.buys AS DOUBLE) / CAST(NULLIF(subq_49.visits, 0) AS DOUBLE) AS user__visit_buy_conversion_rate + , subq_35.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -30,13 +30,13 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_24 + ) subq_35 LEFT OUTER JOIN ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_28.user, subq_37.user) AS user - , MAX(subq_28.visits) AS visits - , MAX(subq_37.buys) AS buys + COALESCE(subq_39.user, subq_48.user) AS user + , MAX(subq_39.visits) AS visits + , MAX(subq_48.buys) AS buys FROM ( -- Read From CTE For node_id=sma_28019 -- Pass Only Elements: ['visits', 'user'] @@ -47,43 +47,43 @@ FROM ( FROM sma_28019_cte sma_28019_cte GROUP BY sma_28019_cte.user - ) subq_28 + ) subq_39 FULL OUTER JOIN ( -- Find conversions for user within the range of INF -- Pass Only Elements: ['buys', 'user'] -- Aggregate Measures SELECT - subq_34.user + subq_45.user , SUM(buys) AS buys FROM ( -- Dedupe the fanout with mf_internal_uuid in the conversion data set SELECT DISTINCT FIRST_VALUE(sma_28019_cte.visits) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS visits , FIRST_VALUE(sma_28019_cte.metric_time__day) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS metric_time__day , FIRST_VALUE(sma_28019_cte.user) OVER ( PARTITION BY - subq_33.user - , subq_33.metric_time__day - , subq_33.mf_internal_uuid + subq_44.user + , subq_44.metric_time__day + , subq_44.mf_internal_uuid ORDER BY sma_28019_cte.metric_time__day DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS user - , subq_33.mf_internal_uuid AS mf_internal_uuid - , subq_33.buys AS buys + , subq_44.mf_internal_uuid AS mf_internal_uuid + , subq_44.buys AS buys FROM sma_28019_cte sma_28019_cte INNER JOIN ( -- Read Elements From Semantic Model 'buys_source' @@ -95,23 +95,23 @@ FROM ( , 1 AS buys , UUID() AS mf_internal_uuid FROM ***************************.fct_buys buys_source_src_28000 - ) subq_33 + ) subq_44 ON ( - sma_28019_cte.user = subq_33.user + sma_28019_cte.user = subq_44.user ) AND ( - (sma_28019_cte.metric_time__day <= subq_33.metric_time__day) + (sma_28019_cte.metric_time__day <= subq_44.metric_time__day) ) - ) subq_34 + ) subq_45 GROUP BY - subq_34.user - ) subq_37 + subq_45.user + ) subq_48 ON - subq_28.user = subq_37.user + subq_39.user = subq_48.user GROUP BY - COALESCE(subq_28.user, subq_37.user) - ) subq_38 + COALESCE(subq_39.user, subq_48.user) + ) subq_49 ON - subq_24.user = subq_38.user -) subq_41 + subq_35.user = subq_49.user +) subq_52 WHERE user__visit_buy_conversion_rate > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0.sql index 080ee9bc37..efd8b59ffd 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0.sql @@ -4,229 +4,229 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_15.listings + subq_20.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_14.listings) AS listings + SUM(subq_19.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_13.listings + subq_18.listings FROM ( -- Constrain Output with WHERE SELECT - subq_12.ds__day - , subq_12.ds__week - , subq_12.ds__month - , subq_12.ds__quarter - , subq_12.ds__year - , subq_12.ds__extract_year - , subq_12.ds__extract_quarter - , subq_12.ds__extract_month - , subq_12.ds__extract_day - , subq_12.ds__extract_dow - , subq_12.ds__extract_doy - , subq_12.created_at__day - , subq_12.created_at__week - , subq_12.created_at__month - , subq_12.created_at__quarter - , subq_12.created_at__year - , subq_12.created_at__extract_year - , subq_12.created_at__extract_quarter - , subq_12.created_at__extract_month - , subq_12.created_at__extract_day - , subq_12.created_at__extract_dow - , subq_12.created_at__extract_doy - , subq_12.listing__ds__day - , subq_12.listing__ds__week - , subq_12.listing__ds__month - , subq_12.listing__ds__quarter - , subq_12.listing__ds__year - , subq_12.listing__ds__extract_year - , subq_12.listing__ds__extract_quarter - , subq_12.listing__ds__extract_month - , subq_12.listing__ds__extract_day - , subq_12.listing__ds__extract_dow - , subq_12.listing__ds__extract_doy - , subq_12.listing__created_at__day - , subq_12.listing__created_at__week - , subq_12.listing__created_at__month - , subq_12.listing__created_at__quarter - , subq_12.listing__created_at__year - , subq_12.listing__created_at__extract_year - , subq_12.listing__created_at__extract_quarter - , subq_12.listing__created_at__extract_month - , subq_12.listing__created_at__extract_day - , subq_12.listing__created_at__extract_dow - , subq_12.listing__created_at__extract_doy - , subq_12.metric_time__day - , subq_12.metric_time__week - , subq_12.metric_time__month - , subq_12.metric_time__quarter - , subq_12.metric_time__year - , subq_12.metric_time__extract_year - , subq_12.metric_time__extract_quarter - , subq_12.metric_time__extract_month - , subq_12.metric_time__extract_day - , subq_12.metric_time__extract_dow - , subq_12.metric_time__extract_doy - , subq_12.listing - , subq_12.user - , subq_12.listing__user - , subq_12.user__listing__user - , subq_12.country_latest - , subq_12.is_lux_latest - , subq_12.capacity_latest - , subq_12.listing__country_latest - , subq_12.listing__is_lux_latest - , subq_12.listing__capacity_latest - , subq_12.user__listing__user__average_booking_value - , subq_12.listings - , subq_12.largest_listing - , subq_12.smallest_listing + subq_17.ds__day + , subq_17.ds__week + , subq_17.ds__month + , subq_17.ds__quarter + , subq_17.ds__year + , subq_17.ds__extract_year + , subq_17.ds__extract_quarter + , subq_17.ds__extract_month + , subq_17.ds__extract_day + , subq_17.ds__extract_dow + , subq_17.ds__extract_doy + , subq_17.created_at__day + , subq_17.created_at__week + , subq_17.created_at__month + , subq_17.created_at__quarter + , subq_17.created_at__year + , subq_17.created_at__extract_year + , subq_17.created_at__extract_quarter + , subq_17.created_at__extract_month + , subq_17.created_at__extract_day + , subq_17.created_at__extract_dow + , subq_17.created_at__extract_doy + , subq_17.listing__ds__day + , subq_17.listing__ds__week + , subq_17.listing__ds__month + , subq_17.listing__ds__quarter + , subq_17.listing__ds__year + , subq_17.listing__ds__extract_year + , subq_17.listing__ds__extract_quarter + , subq_17.listing__ds__extract_month + , subq_17.listing__ds__extract_day + , subq_17.listing__ds__extract_dow + , subq_17.listing__ds__extract_doy + , subq_17.listing__created_at__day + , subq_17.listing__created_at__week + , subq_17.listing__created_at__month + , subq_17.listing__created_at__quarter + , subq_17.listing__created_at__year + , subq_17.listing__created_at__extract_year + , subq_17.listing__created_at__extract_quarter + , subq_17.listing__created_at__extract_month + , subq_17.listing__created_at__extract_day + , subq_17.listing__created_at__extract_dow + , subq_17.listing__created_at__extract_doy + , subq_17.metric_time__day + , subq_17.metric_time__week + , subq_17.metric_time__month + , subq_17.metric_time__quarter + , subq_17.metric_time__year + , subq_17.metric_time__extract_year + , subq_17.metric_time__extract_quarter + , subq_17.metric_time__extract_month + , subq_17.metric_time__extract_day + , subq_17.metric_time__extract_dow + , subq_17.metric_time__extract_doy + , subq_17.listing + , subq_17.user + , subq_17.listing__user + , subq_17.user__listing__user + , subq_17.country_latest + , subq_17.is_lux_latest + , subq_17.capacity_latest + , subq_17.listing__country_latest + , subq_17.listing__is_lux_latest + , subq_17.listing__capacity_latest + , subq_17.user__listing__user__average_booking_value + , subq_17.listings + , subq_17.largest_listing + , subq_17.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_11.listing__user AS user__listing__user - , subq_11.listing__user__average_booking_value AS user__listing__user__average_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_16.listing__user AS user__listing__user + , subq_16.listing__user__average_booking_value AS user__listing__user__average_booking_value + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,231 +287,231 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing__user', 'listing__user__average_booking_value'] SELECT - subq_10.listing__user - , subq_10.listing__user__average_booking_value + subq_15.listing__user + , subq_15.listing__user__average_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_9.listing__user - , subq_9.average_booking_value AS listing__user__average_booking_value + subq_14.listing__user + , subq_14.average_booking_value AS listing__user__average_booking_value FROM ( -- Aggregate Measures SELECT - subq_8.listing__user - , AVG(subq_8.average_booking_value) AS average_booking_value + subq_13.listing__user + , AVG(subq_13.average_booking_value) AS average_booking_value FROM ( -- Pass Only Elements: ['average_booking_value', 'listing__user'] SELECT - subq_7.listing__user - , subq_7.average_booking_value + subq_12.listing__user + , subq_12.average_booking_value FROM ( -- Join Standard Outputs SELECT - subq_6.user AS listing__user - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.paid_at__day AS paid_at__day - , subq_3.paid_at__week AS paid_at__week - , subq_3.paid_at__month AS paid_at__month - , subq_3.paid_at__quarter AS paid_at__quarter - , subq_3.paid_at__year AS paid_at__year - , subq_3.paid_at__extract_year AS paid_at__extract_year - , subq_3.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_3.paid_at__extract_month AS paid_at__extract_month - , subq_3.paid_at__extract_day AS paid_at__extract_day - , subq_3.paid_at__extract_dow AS paid_at__extract_dow - , subq_3.paid_at__extract_doy AS paid_at__extract_doy - , subq_3.booking__ds__day AS booking__ds__day - , subq_3.booking__ds__week AS booking__ds__week - , subq_3.booking__ds__month AS booking__ds__month - , subq_3.booking__ds__quarter AS booking__ds__quarter - , subq_3.booking__ds__year AS booking__ds__year - , subq_3.booking__ds__extract_year AS booking__ds__extract_year - , subq_3.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_3.booking__ds__extract_month AS booking__ds__extract_month - , subq_3.booking__ds__extract_day AS booking__ds__extract_day - , subq_3.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_3.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_3.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_3.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_3.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_3.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_3.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_3.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_3.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_3.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_3.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_3.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_3.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_3.booking__paid_at__day AS booking__paid_at__day - , subq_3.booking__paid_at__week AS booking__paid_at__week - , subq_3.booking__paid_at__month AS booking__paid_at__month - , subq_3.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_3.booking__paid_at__year AS booking__paid_at__year - , subq_3.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_3.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_3.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_3.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_3.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_3.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.listing AS listing - , subq_3.guest AS guest - , subq_3.host AS host - , subq_3.booking__listing AS booking__listing - , subq_3.booking__guest AS booking__guest - , subq_3.booking__host AS booking__host - , subq_3.is_instant AS is_instant - , subq_3.booking__is_instant AS booking__is_instant - , subq_3.bookings AS bookings - , subq_3.instant_bookings AS instant_bookings - , subq_3.booking_value AS booking_value - , subq_3.max_booking_value AS max_booking_value - , subq_3.min_booking_value AS min_booking_value - , subq_3.bookers AS bookers - , subq_3.average_booking_value AS average_booking_value - , subq_3.referred_bookings AS referred_bookings - , subq_3.median_booking_value AS median_booking_value - , subq_3.booking_value_p99 AS booking_value_p99 - , subq_3.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_3.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_3.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_11.user AS listing__user + , subq_9.ds__day AS ds__day + , subq_9.ds__week AS ds__week + , subq_9.ds__month AS ds__month + , subq_9.ds__quarter AS ds__quarter + , subq_9.ds__year AS ds__year + , subq_9.ds__extract_year AS ds__extract_year + , subq_9.ds__extract_quarter AS ds__extract_quarter + , subq_9.ds__extract_month AS ds__extract_month + , subq_9.ds__extract_day AS ds__extract_day + , subq_9.ds__extract_dow AS ds__extract_dow + , subq_9.ds__extract_doy AS ds__extract_doy + , subq_9.ds_partitioned__day AS ds_partitioned__day + , subq_9.ds_partitioned__week AS ds_partitioned__week + , subq_9.ds_partitioned__month AS ds_partitioned__month + , subq_9.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_9.ds_partitioned__year AS ds_partitioned__year + , subq_9.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_9.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_9.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_9.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_9.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_9.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_9.paid_at__day AS paid_at__day + , subq_9.paid_at__week AS paid_at__week + , subq_9.paid_at__month AS paid_at__month + , subq_9.paid_at__quarter AS paid_at__quarter + , subq_9.paid_at__year AS paid_at__year + , subq_9.paid_at__extract_year AS paid_at__extract_year + , subq_9.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_9.paid_at__extract_month AS paid_at__extract_month + , subq_9.paid_at__extract_day AS paid_at__extract_day + , subq_9.paid_at__extract_dow AS paid_at__extract_dow + , subq_9.paid_at__extract_doy AS paid_at__extract_doy + , subq_9.booking__ds__day AS booking__ds__day + , subq_9.booking__ds__week AS booking__ds__week + , subq_9.booking__ds__month AS booking__ds__month + , subq_9.booking__ds__quarter AS booking__ds__quarter + , subq_9.booking__ds__year AS booking__ds__year + , subq_9.booking__ds__extract_year AS booking__ds__extract_year + , subq_9.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_9.booking__ds__extract_month AS booking__ds__extract_month + , subq_9.booking__ds__extract_day AS booking__ds__extract_day + , subq_9.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_9.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_9.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_9.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_9.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_9.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_9.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_9.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_9.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_9.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_9.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_9.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_9.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_9.booking__paid_at__day AS booking__paid_at__day + , subq_9.booking__paid_at__week AS booking__paid_at__week + , subq_9.booking__paid_at__month AS booking__paid_at__month + , subq_9.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_9.booking__paid_at__year AS booking__paid_at__year + , subq_9.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_9.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_9.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_9.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_9.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_9.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_9.metric_time__day AS metric_time__day + , subq_9.metric_time__week AS metric_time__week + , subq_9.metric_time__month AS metric_time__month + , subq_9.metric_time__quarter AS metric_time__quarter + , subq_9.metric_time__year AS metric_time__year + , subq_9.metric_time__extract_year AS metric_time__extract_year + , subq_9.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_9.metric_time__extract_month AS metric_time__extract_month + , subq_9.metric_time__extract_day AS metric_time__extract_day + , subq_9.metric_time__extract_dow AS metric_time__extract_dow + , subq_9.metric_time__extract_doy AS metric_time__extract_doy + , subq_9.listing AS listing + , subq_9.guest AS guest + , subq_9.host AS host + , subq_9.booking__listing AS booking__listing + , subq_9.booking__guest AS booking__guest + , subq_9.booking__host AS booking__host + , subq_9.is_instant AS is_instant + , subq_9.booking__is_instant AS booking__is_instant + , subq_9.bookings AS bookings + , subq_9.instant_bookings AS instant_bookings + , subq_9.booking_value AS booking_value + , subq_9.max_booking_value AS max_booking_value + , subq_9.min_booking_value AS min_booking_value + , subq_9.bookers AS bookers + , subq_9.average_booking_value AS average_booking_value + , subq_9.referred_bookings AS referred_bookings + , subq_9.median_booking_value AS median_booking_value + , subq_9.booking_value_p99 AS booking_value_p99 + , subq_9.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_9.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_9.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -604,83 +604,83 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 + ) subq_8 + ) subq_9 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'user'] SELECT - subq_5.listing - , subq_5.user + subq_10.listing + , subq_10.user FROM ( -- Metric Time Dimension 'ds' SELECT - subq_4.ds__day - , subq_4.ds__week - , subq_4.ds__month - , subq_4.ds__quarter - , subq_4.ds__year - , subq_4.ds__extract_year - , subq_4.ds__extract_quarter - , subq_4.ds__extract_month - , subq_4.ds__extract_day - , subq_4.ds__extract_dow - , subq_4.ds__extract_doy - , subq_4.created_at__day - , subq_4.created_at__week - , subq_4.created_at__month - , subq_4.created_at__quarter - , subq_4.created_at__year - , subq_4.created_at__extract_year - , subq_4.created_at__extract_quarter - , subq_4.created_at__extract_month - , subq_4.created_at__extract_day - , subq_4.created_at__extract_dow - , subq_4.created_at__extract_doy - , subq_4.listing__ds__day - , subq_4.listing__ds__week - , subq_4.listing__ds__month - , subq_4.listing__ds__quarter - , subq_4.listing__ds__year - , subq_4.listing__ds__extract_year - , subq_4.listing__ds__extract_quarter - , subq_4.listing__ds__extract_month - , subq_4.listing__ds__extract_day - , subq_4.listing__ds__extract_dow - , subq_4.listing__ds__extract_doy - , subq_4.listing__created_at__day - , subq_4.listing__created_at__week - , subq_4.listing__created_at__month - , subq_4.listing__created_at__quarter - , subq_4.listing__created_at__year - , subq_4.listing__created_at__extract_year - , subq_4.listing__created_at__extract_quarter - , subq_4.listing__created_at__extract_month - , subq_4.listing__created_at__extract_day - , subq_4.listing__created_at__extract_dow - , subq_4.listing__created_at__extract_doy - , subq_4.ds__day AS metric_time__day - , subq_4.ds__week AS metric_time__week - , subq_4.ds__month AS metric_time__month - , subq_4.ds__quarter AS metric_time__quarter - , subq_4.ds__year AS metric_time__year - , subq_4.ds__extract_year AS metric_time__extract_year - , subq_4.ds__extract_quarter AS metric_time__extract_quarter - , subq_4.ds__extract_month AS metric_time__extract_month - , subq_4.ds__extract_day AS metric_time__extract_day - , subq_4.ds__extract_dow AS metric_time__extract_dow - , subq_4.ds__extract_doy AS metric_time__extract_doy - , subq_4.listing - , subq_4.user - , subq_4.listing__user - , subq_4.country_latest - , subq_4.is_lux_latest - , subq_4.capacity_latest - , subq_4.listing__country_latest - , subq_4.listing__is_lux_latest - , subq_4.listing__capacity_latest - , subq_4.listings - , subq_4.largest_listing - , subq_4.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -741,22 +741,22 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_4 - ) subq_5 - ) subq_6 + ) subq_6 + ) subq_10 + ) subq_11 ON - subq_3.listing = subq_6.listing - ) subq_7 - ) subq_8 + subq_9.listing = subq_11.listing + ) subq_12 + ) subq_13 GROUP BY - subq_8.listing__user - ) subq_9 - ) subq_10 - ) subq_11 + subq_13.listing__user + ) subq_14 + ) subq_15 + ) subq_16 ON - subq_1.user = subq_11.listing__user - ) subq_12 + subq_7.user = subq_16.listing__user + ) subq_17 WHERE user__listing__user__average_booking_value > 1 - ) subq_13 - ) subq_14 -) subq_15 + ) subq_18 + ) subq_19 +) subq_20 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0_optimized.sql index ed3efa586c..14b3394fae 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_group_by_has_local_entity_prefix__plan0_optimized.sql @@ -21,7 +21,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_26.listing__user__average_booking_value AS user__listing__user__average_booking_value + subq_31.listing__user__average_booking_value AS user__listing__user__average_booking_value , sma_28014_cte.listings AS listings FROM sma_28014_cte sma_28014_cte LEFT OUTER JOIN ( @@ -40,8 +40,8 @@ FROM ( bookings_source_src_28000.listing_id = sma_28014_cte.listing GROUP BY sma_28014_cte.user - ) subq_26 + ) subq_31 ON - sma_28014_cte.user = subq_26.listing__user -) subq_27 + sma_28014_cte.user = subq_31.listing__user +) subq_32 WHERE user__listing__user__average_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0.sql index 41cf45366c..26ece97d23 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_19.third_hop_count + subq_28.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_18.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_27.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_17.third_hop_count + subq_26.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_16.third_hop_ds__day - , subq_16.third_hop_ds__week - , subq_16.third_hop_ds__month - , subq_16.third_hop_ds__quarter - , subq_16.third_hop_ds__year - , subq_16.third_hop_ds__extract_year - , subq_16.third_hop_ds__extract_quarter - , subq_16.third_hop_ds__extract_month - , subq_16.third_hop_ds__extract_day - , subq_16.third_hop_ds__extract_dow - , subq_16.third_hop_ds__extract_doy - , subq_16.customer_third_hop_id__third_hop_ds__day - , subq_16.customer_third_hop_id__third_hop_ds__week - , subq_16.customer_third_hop_id__third_hop_ds__month - , subq_16.customer_third_hop_id__third_hop_ds__quarter - , subq_16.customer_third_hop_id__third_hop_ds__year - , subq_16.customer_third_hop_id__third_hop_ds__extract_year - , subq_16.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_16.customer_third_hop_id__third_hop_ds__extract_month - , subq_16.customer_third_hop_id__third_hop_ds__extract_day - , subq_16.customer_third_hop_id__third_hop_ds__extract_dow - , subq_16.customer_third_hop_id__third_hop_ds__extract_doy - , subq_16.metric_time__day - , subq_16.metric_time__week - , subq_16.metric_time__month - , subq_16.metric_time__quarter - , subq_16.metric_time__year - , subq_16.metric_time__extract_year - , subq_16.metric_time__extract_quarter - , subq_16.metric_time__extract_month - , subq_16.metric_time__extract_day - , subq_16.metric_time__extract_dow - , subq_16.metric_time__extract_doy - , subq_16.customer_third_hop_id - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_16.value - , subq_16.customer_third_hop_id__value - , subq_16.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_16.third_hop_count + subq_25.third_hop_ds__day + , subq_25.third_hop_ds__week + , subq_25.third_hop_ds__month + , subq_25.third_hop_ds__quarter + , subq_25.third_hop_ds__year + , subq_25.third_hop_ds__extract_year + , subq_25.third_hop_ds__extract_quarter + , subq_25.third_hop_ds__extract_month + , subq_25.third_hop_ds__extract_day + , subq_25.third_hop_ds__extract_dow + , subq_25.third_hop_ds__extract_doy + , subq_25.customer_third_hop_id__third_hop_ds__day + , subq_25.customer_third_hop_id__third_hop_ds__week + , subq_25.customer_third_hop_id__third_hop_ds__month + , subq_25.customer_third_hop_id__third_hop_ds__quarter + , subq_25.customer_third_hop_id__third_hop_ds__year + , subq_25.customer_third_hop_id__third_hop_ds__extract_year + , subq_25.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_25.customer_third_hop_id__third_hop_ds__extract_month + , subq_25.customer_third_hop_id__third_hop_ds__extract_day + , subq_25.customer_third_hop_id__third_hop_ds__extract_dow + , subq_25.customer_third_hop_id__third_hop_ds__extract_doy + , subq_25.metric_time__day + , subq_25.metric_time__week + , subq_25.metric_time__month + , subq_25.metric_time__quarter + , subq_25.metric_time__year + , subq_25.metric_time__extract_year + , subq_25.metric_time__extract_quarter + , subq_25.metric_time__extract_month + , subq_25.metric_time__extract_day + , subq_25.metric_time__extract_dow + , subq_25.metric_time__extract_doy + , subq_25.customer_third_hop_id + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_25.value + , subq_25.customer_third_hop_id__value + , subq_25.customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_25.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_15.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id - , subq_15.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_24.account_id__customer_id__customer_third_hop_id AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id + , subq_24.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + , subq_10.third_hop_ds__day AS third_hop_ds__day + , subq_10.third_hop_ds__week AS third_hop_ds__week + , subq_10.third_hop_ds__month AS third_hop_ds__month + , subq_10.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_10.third_hop_ds__year AS third_hop_ds__year + , subq_10.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_10.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_10.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_10.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_10.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_10.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_10.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_10.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_10.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_10.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_10.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_10.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_10.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_10.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_10.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_10.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_10.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.customer_third_hop_id AS customer_third_hop_id + , subq_10.value AS value + , subq_10.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_10.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_9.third_hop_ds__day + , subq_9.third_hop_ds__week + , subq_9.third_hop_ds__month + , subq_9.third_hop_ds__quarter + , subq_9.third_hop_ds__year + , subq_9.third_hop_ds__extract_year + , subq_9.third_hop_ds__extract_quarter + , subq_9.third_hop_ds__extract_month + , subq_9.third_hop_ds__extract_day + , subq_9.third_hop_ds__extract_dow + , subq_9.third_hop_ds__extract_doy + , subq_9.customer_third_hop_id__third_hop_ds__day + , subq_9.customer_third_hop_id__third_hop_ds__week + , subq_9.customer_third_hop_id__third_hop_ds__month + , subq_9.customer_third_hop_id__third_hop_ds__quarter + , subq_9.customer_third_hop_id__third_hop_ds__year + , subq_9.customer_third_hop_id__third_hop_ds__extract_year + , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_9.customer_third_hop_id__third_hop_ds__extract_month + , subq_9.customer_third_hop_id__third_hop_ds__extract_day + , subq_9.customer_third_hop_id__third_hop_ds__extract_dow + , subq_9.customer_third_hop_id__third_hop_ds__extract_doy + , subq_9.third_hop_ds__day AS metric_time__day + , subq_9.third_hop_ds__week AS metric_time__week + , subq_9.third_hop_ds__month AS metric_time__month + , subq_9.third_hop_ds__quarter AS metric_time__quarter + , subq_9.third_hop_ds__year AS metric_time__year + , subq_9.third_hop_ds__extract_year AS metric_time__extract_year + , subq_9.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_9.third_hop_ds__extract_month AS metric_time__extract_month + , subq_9.third_hop_ds__extract_day AS metric_time__extract_day + , subq_9.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_9.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_9.customer_third_hop_id + , subq_9.value + , subq_9.customer_third_hop_id__value + , subq_9.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,154 +169,154 @@ FROM ( , EXTRACT(doy FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_14.account_id__customer_id__customer_third_hop_id - , subq_14.account_id__customer_id__customer_third_hop_id__txn_count + subq_23.account_id__customer_id__customer_third_hop_id + , subq_23.account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Compute Metrics via Expressions SELECT - subq_13.account_id__customer_id__customer_third_hop_id - , subq_13.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count + subq_22.account_id__customer_id__customer_third_hop_id + , subq_22.txn_count AS account_id__customer_id__customer_third_hop_id__txn_count FROM ( -- Aggregate Measures SELECT - subq_12.account_id__customer_id__customer_third_hop_id - , SUM(subq_12.txn_count) AS txn_count + subq_21.account_id__customer_id__customer_third_hop_id + , SUM(subq_21.txn_count) AS txn_count FROM ( -- Pass Only Elements: ['txn_count', 'account_id__customer_id__customer_third_hop_id'] SELECT - subq_11.account_id__customer_id__customer_third_hop_id - , subq_11.txn_count + subq_20.account_id__customer_id__customer_third_hop_id + , subq_20.txn_count FROM ( -- Join Standard Outputs SELECT - subq_10.ds_partitioned__day AS account_id__ds_partitioned__day - , subq_10.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id - , subq_3.ds_partitioned__day AS ds_partitioned__day - , subq_3.ds_partitioned__week AS ds_partitioned__week - , subq_3.ds_partitioned__month AS ds_partitioned__month - , subq_3.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_3.ds_partitioned__year AS ds_partitioned__year - , subq_3.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_3.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_3.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_3.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_3.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_3.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_3.ds__day AS ds__day - , subq_3.ds__week AS ds__week - , subq_3.ds__month AS ds__month - , subq_3.ds__quarter AS ds__quarter - , subq_3.ds__year AS ds__year - , subq_3.ds__extract_year AS ds__extract_year - , subq_3.ds__extract_quarter AS ds__extract_quarter - , subq_3.ds__extract_month AS ds__extract_month - , subq_3.ds__extract_day AS ds__extract_day - , subq_3.ds__extract_dow AS ds__extract_dow - , subq_3.ds__extract_doy AS ds__extract_doy - , subq_3.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_3.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_3.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_3.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_3.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_3.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_3.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_3.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_3.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_3.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_3.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_3.account_id__ds__day AS account_id__ds__day - , subq_3.account_id__ds__week AS account_id__ds__week - , subq_3.account_id__ds__month AS account_id__ds__month - , subq_3.account_id__ds__quarter AS account_id__ds__quarter - , subq_3.account_id__ds__year AS account_id__ds__year - , subq_3.account_id__ds__extract_year AS account_id__ds__extract_year - , subq_3.account_id__ds__extract_quarter AS account_id__ds__extract_quarter - , subq_3.account_id__ds__extract_month AS account_id__ds__extract_month - , subq_3.account_id__ds__extract_day AS account_id__ds__extract_day - , subq_3.account_id__ds__extract_dow AS account_id__ds__extract_dow - , subq_3.account_id__ds__extract_doy AS account_id__ds__extract_doy - , subq_3.metric_time__day AS metric_time__day - , subq_3.metric_time__week AS metric_time__week - , subq_3.metric_time__month AS metric_time__month - , subq_3.metric_time__quarter AS metric_time__quarter - , subq_3.metric_time__year AS metric_time__year - , subq_3.metric_time__extract_year AS metric_time__extract_year - , subq_3.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_3.metric_time__extract_month AS metric_time__extract_month - , subq_3.metric_time__extract_day AS metric_time__extract_day - , subq_3.metric_time__extract_dow AS metric_time__extract_dow - , subq_3.metric_time__extract_doy AS metric_time__extract_doy - , subq_3.account_id AS account_id - , subq_3.account_month AS account_month - , subq_3.account_id__account_month AS account_id__account_month - , subq_3.txn_count AS txn_count + subq_19.ds_partitioned__day AS account_id__ds_partitioned__day + , subq_19.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + , subq_12.ds_partitioned__day AS ds_partitioned__day + , subq_12.ds_partitioned__week AS ds_partitioned__week + , subq_12.ds_partitioned__month AS ds_partitioned__month + , subq_12.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_12.ds_partitioned__year AS ds_partitioned__year + , subq_12.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_12.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_12.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_12.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_12.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_12.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_12.ds__day AS ds__day + , subq_12.ds__week AS ds__week + , subq_12.ds__month AS ds__month + , subq_12.ds__quarter AS ds__quarter + , subq_12.ds__year AS ds__year + , subq_12.ds__extract_year AS ds__extract_year + , subq_12.ds__extract_quarter AS ds__extract_quarter + , subq_12.ds__extract_month AS ds__extract_month + , subq_12.ds__extract_day AS ds__extract_day + , subq_12.ds__extract_dow AS ds__extract_dow + , subq_12.ds__extract_doy AS ds__extract_doy + , subq_12.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_12.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_12.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_12.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_12.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_12.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_12.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_12.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_12.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_12.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_12.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_12.account_id__ds__day AS account_id__ds__day + , subq_12.account_id__ds__week AS account_id__ds__week + , subq_12.account_id__ds__month AS account_id__ds__month + , subq_12.account_id__ds__quarter AS account_id__ds__quarter + , subq_12.account_id__ds__year AS account_id__ds__year + , subq_12.account_id__ds__extract_year AS account_id__ds__extract_year + , subq_12.account_id__ds__extract_quarter AS account_id__ds__extract_quarter + , subq_12.account_id__ds__extract_month AS account_id__ds__extract_month + , subq_12.account_id__ds__extract_day AS account_id__ds__extract_day + , subq_12.account_id__ds__extract_dow AS account_id__ds__extract_dow + , subq_12.account_id__ds__extract_doy AS account_id__ds__extract_doy + , subq_12.metric_time__day AS metric_time__day + , subq_12.metric_time__week AS metric_time__week + , subq_12.metric_time__month AS metric_time__month + , subq_12.metric_time__quarter AS metric_time__quarter + , subq_12.metric_time__year AS metric_time__year + , subq_12.metric_time__extract_year AS metric_time__extract_year + , subq_12.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_12.metric_time__extract_month AS metric_time__extract_month + , subq_12.metric_time__extract_day AS metric_time__extract_day + , subq_12.metric_time__extract_dow AS metric_time__extract_dow + , subq_12.metric_time__extract_doy AS metric_time__extract_doy + , subq_12.account_id AS account_id + , subq_12.account_month AS account_month + , subq_12.account_id__account_month AS account_id__account_month + , subq_12.txn_count AS txn_count FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.account_id__ds_partitioned__day - , subq_2.account_id__ds_partitioned__week - , subq_2.account_id__ds_partitioned__month - , subq_2.account_id__ds_partitioned__quarter - , subq_2.account_id__ds_partitioned__year - , subq_2.account_id__ds_partitioned__extract_year - , subq_2.account_id__ds_partitioned__extract_quarter - , subq_2.account_id__ds_partitioned__extract_month - , subq_2.account_id__ds_partitioned__extract_day - , subq_2.account_id__ds_partitioned__extract_dow - , subq_2.account_id__ds_partitioned__extract_doy - , subq_2.account_id__ds__day - , subq_2.account_id__ds__week - , subq_2.account_id__ds__month - , subq_2.account_id__ds__quarter - , subq_2.account_id__ds__year - , subq_2.account_id__ds__extract_year - , subq_2.account_id__ds__extract_quarter - , subq_2.account_id__ds__extract_month - , subq_2.account_id__ds__extract_day - , subq_2.account_id__ds__extract_dow - , subq_2.account_id__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.account_id - , subq_2.account_month - , subq_2.account_id__account_month - , subq_2.txn_count + subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.account_id__ds_partitioned__day + , subq_11.account_id__ds_partitioned__week + , subq_11.account_id__ds_partitioned__month + , subq_11.account_id__ds_partitioned__quarter + , subq_11.account_id__ds_partitioned__year + , subq_11.account_id__ds_partitioned__extract_year + , subq_11.account_id__ds_partitioned__extract_quarter + , subq_11.account_id__ds_partitioned__extract_month + , subq_11.account_id__ds_partitioned__extract_day + , subq_11.account_id__ds_partitioned__extract_dow + , subq_11.account_id__ds_partitioned__extract_doy + , subq_11.account_id__ds__day + , subq_11.account_id__ds__week + , subq_11.account_id__ds__month + , subq_11.account_id__ds__quarter + , subq_11.account_id__ds__year + , subq_11.account_id__ds__extract_year + , subq_11.account_id__ds__extract_quarter + , subq_11.account_id__ds__extract_month + , subq_11.account_id__ds__extract_day + , subq_11.account_id__ds__extract_dow + , subq_11.account_id__ds__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.account_id + , subq_11.account_month + , subq_11.account_id__account_month + , subq_11.txn_count FROM ( -- Read Elements From Semantic Model 'account_month_txns' SELECT @@ -369,163 +369,163 @@ FROM ( , account_month_txns_src_22000.account_month AS account_id__account_month , account_month_txns_src_22000.account_id FROM ***************************.account_month_txns account_month_txns_src_22000 - ) subq_2 - ) subq_3 + ) subq_11 + ) subq_12 LEFT OUTER JOIN ( -- Pass Only Elements: ['ds_partitioned__day', 'account_id', 'customer_id__customer_third_hop_id'] SELECT - subq_9.ds_partitioned__day - , subq_9.account_id - , subq_9.customer_id__customer_third_hop_id + subq_18.ds_partitioned__day + , subq_18.account_id + , subq_18.customer_id__customer_third_hop_id FROM ( -- Join Standard Outputs SELECT - subq_8.country AS customer_id__country - , subq_8.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country - , subq_8.acquired_ds__day AS customer_id__acquired_ds__day - , subq_8.acquired_ds__week AS customer_id__acquired_ds__week - , subq_8.acquired_ds__month AS customer_id__acquired_ds__month - , subq_8.acquired_ds__quarter AS customer_id__acquired_ds__quarter - , subq_8.acquired_ds__year AS customer_id__acquired_ds__year - , subq_8.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year - , subq_8.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter - , subq_8.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month - , subq_8.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day - , subq_8.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow - , subq_8.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy - , subq_8.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day - , subq_8.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week - , subq_8.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month - , subq_8.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter - , subq_8.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year - , subq_8.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year - , subq_8.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter - , subq_8.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month - , subq_8.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day - , subq_8.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow - , subq_8.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy - , subq_8.metric_time__day AS customer_id__metric_time__day - , subq_8.metric_time__week AS customer_id__metric_time__week - , subq_8.metric_time__month AS customer_id__metric_time__month - , subq_8.metric_time__quarter AS customer_id__metric_time__quarter - , subq_8.metric_time__year AS customer_id__metric_time__year - , subq_8.metric_time__extract_year AS customer_id__metric_time__extract_year - , subq_8.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter - , subq_8.metric_time__extract_month AS customer_id__metric_time__extract_month - , subq_8.metric_time__extract_day AS customer_id__metric_time__extract_day - , subq_8.metric_time__extract_dow AS customer_id__metric_time__extract_dow - , subq_8.metric_time__extract_doy AS customer_id__metric_time__extract_doy - , subq_8.customer_third_hop_id AS customer_id__customer_third_hop_id - , subq_8.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id - , subq_5.ds_partitioned__day AS ds_partitioned__day - , subq_5.ds_partitioned__week AS ds_partitioned__week - , subq_5.ds_partitioned__month AS ds_partitioned__month - , subq_5.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_5.ds_partitioned__year AS ds_partitioned__year - , subq_5.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_5.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_5.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_5.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_5.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_5.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_5.account_id__ds_partitioned__day AS account_id__ds_partitioned__day - , subq_5.account_id__ds_partitioned__week AS account_id__ds_partitioned__week - , subq_5.account_id__ds_partitioned__month AS account_id__ds_partitioned__month - , subq_5.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter - , subq_5.account_id__ds_partitioned__year AS account_id__ds_partitioned__year - , subq_5.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year - , subq_5.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter - , subq_5.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month - , subq_5.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day - , subq_5.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow - , subq_5.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy - , subq_5.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day - , subq_5.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week - , subq_5.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month - , subq_5.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter - , subq_5.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year - , subq_5.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year - , subq_5.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter - , subq_5.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month - , subq_5.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day - , subq_5.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow - , subq_5.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy - , subq_5.metric_time__day AS metric_time__day - , subq_5.metric_time__week AS metric_time__week - , subq_5.metric_time__month AS metric_time__month - , subq_5.metric_time__quarter AS metric_time__quarter - , subq_5.metric_time__year AS metric_time__year - , subq_5.metric_time__extract_year AS metric_time__extract_year - , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_5.metric_time__extract_month AS metric_time__extract_month - , subq_5.metric_time__extract_day AS metric_time__extract_day - , subq_5.metric_time__extract_dow AS metric_time__extract_dow - , subq_5.metric_time__extract_doy AS metric_time__extract_doy - , subq_5.account_id AS account_id - , subq_5.customer_id AS customer_id - , subq_5.account_id__customer_id AS account_id__customer_id - , subq_5.bridge_account__account_id AS bridge_account__account_id - , subq_5.bridge_account__customer_id AS bridge_account__customer_id - , subq_5.extra_dim AS extra_dim - , subq_5.account_id__extra_dim AS account_id__extra_dim - , subq_5.bridge_account__extra_dim AS bridge_account__extra_dim - , subq_5.account_customer_combos AS account_customer_combos + subq_17.country AS customer_id__country + , subq_17.customer_third_hop_id__country AS customer_id__customer_third_hop_id__country + , subq_17.acquired_ds__day AS customer_id__acquired_ds__day + , subq_17.acquired_ds__week AS customer_id__acquired_ds__week + , subq_17.acquired_ds__month AS customer_id__acquired_ds__month + , subq_17.acquired_ds__quarter AS customer_id__acquired_ds__quarter + , subq_17.acquired_ds__year AS customer_id__acquired_ds__year + , subq_17.acquired_ds__extract_year AS customer_id__acquired_ds__extract_year + , subq_17.acquired_ds__extract_quarter AS customer_id__acquired_ds__extract_quarter + , subq_17.acquired_ds__extract_month AS customer_id__acquired_ds__extract_month + , subq_17.acquired_ds__extract_day AS customer_id__acquired_ds__extract_day + , subq_17.acquired_ds__extract_dow AS customer_id__acquired_ds__extract_dow + , subq_17.acquired_ds__extract_doy AS customer_id__acquired_ds__extract_doy + , subq_17.customer_third_hop_id__acquired_ds__day AS customer_id__customer_third_hop_id__acquired_ds__day + , subq_17.customer_third_hop_id__acquired_ds__week AS customer_id__customer_third_hop_id__acquired_ds__week + , subq_17.customer_third_hop_id__acquired_ds__month AS customer_id__customer_third_hop_id__acquired_ds__month + , subq_17.customer_third_hop_id__acquired_ds__quarter AS customer_id__customer_third_hop_id__acquired_ds__quarter + , subq_17.customer_third_hop_id__acquired_ds__year AS customer_id__customer_third_hop_id__acquired_ds__year + , subq_17.customer_third_hop_id__acquired_ds__extract_year AS customer_id__customer_third_hop_id__acquired_ds__extract_year + , subq_17.customer_third_hop_id__acquired_ds__extract_quarter AS customer_id__customer_third_hop_id__acquired_ds__extract_quarter + , subq_17.customer_third_hop_id__acquired_ds__extract_month AS customer_id__customer_third_hop_id__acquired_ds__extract_month + , subq_17.customer_third_hop_id__acquired_ds__extract_day AS customer_id__customer_third_hop_id__acquired_ds__extract_day + , subq_17.customer_third_hop_id__acquired_ds__extract_dow AS customer_id__customer_third_hop_id__acquired_ds__extract_dow + , subq_17.customer_third_hop_id__acquired_ds__extract_doy AS customer_id__customer_third_hop_id__acquired_ds__extract_doy + , subq_17.metric_time__day AS customer_id__metric_time__day + , subq_17.metric_time__week AS customer_id__metric_time__week + , subq_17.metric_time__month AS customer_id__metric_time__month + , subq_17.metric_time__quarter AS customer_id__metric_time__quarter + , subq_17.metric_time__year AS customer_id__metric_time__year + , subq_17.metric_time__extract_year AS customer_id__metric_time__extract_year + , subq_17.metric_time__extract_quarter AS customer_id__metric_time__extract_quarter + , subq_17.metric_time__extract_month AS customer_id__metric_time__extract_month + , subq_17.metric_time__extract_day AS customer_id__metric_time__extract_day + , subq_17.metric_time__extract_dow AS customer_id__metric_time__extract_dow + , subq_17.metric_time__extract_doy AS customer_id__metric_time__extract_doy + , subq_17.customer_third_hop_id AS customer_id__customer_third_hop_id + , subq_17.customer_third_hop_id__customer_id AS customer_id__customer_third_hop_id__customer_id + , subq_14.ds_partitioned__day AS ds_partitioned__day + , subq_14.ds_partitioned__week AS ds_partitioned__week + , subq_14.ds_partitioned__month AS ds_partitioned__month + , subq_14.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_14.ds_partitioned__year AS ds_partitioned__year + , subq_14.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_14.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_14.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_14.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_14.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_14.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_14.account_id__ds_partitioned__day AS account_id__ds_partitioned__day + , subq_14.account_id__ds_partitioned__week AS account_id__ds_partitioned__week + , subq_14.account_id__ds_partitioned__month AS account_id__ds_partitioned__month + , subq_14.account_id__ds_partitioned__quarter AS account_id__ds_partitioned__quarter + , subq_14.account_id__ds_partitioned__year AS account_id__ds_partitioned__year + , subq_14.account_id__ds_partitioned__extract_year AS account_id__ds_partitioned__extract_year + , subq_14.account_id__ds_partitioned__extract_quarter AS account_id__ds_partitioned__extract_quarter + , subq_14.account_id__ds_partitioned__extract_month AS account_id__ds_partitioned__extract_month + , subq_14.account_id__ds_partitioned__extract_day AS account_id__ds_partitioned__extract_day + , subq_14.account_id__ds_partitioned__extract_dow AS account_id__ds_partitioned__extract_dow + , subq_14.account_id__ds_partitioned__extract_doy AS account_id__ds_partitioned__extract_doy + , subq_14.bridge_account__ds_partitioned__day AS bridge_account__ds_partitioned__day + , subq_14.bridge_account__ds_partitioned__week AS bridge_account__ds_partitioned__week + , subq_14.bridge_account__ds_partitioned__month AS bridge_account__ds_partitioned__month + , subq_14.bridge_account__ds_partitioned__quarter AS bridge_account__ds_partitioned__quarter + , subq_14.bridge_account__ds_partitioned__year AS bridge_account__ds_partitioned__year + , subq_14.bridge_account__ds_partitioned__extract_year AS bridge_account__ds_partitioned__extract_year + , subq_14.bridge_account__ds_partitioned__extract_quarter AS bridge_account__ds_partitioned__extract_quarter + , subq_14.bridge_account__ds_partitioned__extract_month AS bridge_account__ds_partitioned__extract_month + , subq_14.bridge_account__ds_partitioned__extract_day AS bridge_account__ds_partitioned__extract_day + , subq_14.bridge_account__ds_partitioned__extract_dow AS bridge_account__ds_partitioned__extract_dow + , subq_14.bridge_account__ds_partitioned__extract_doy AS bridge_account__ds_partitioned__extract_doy + , subq_14.metric_time__day AS metric_time__day + , subq_14.metric_time__week AS metric_time__week + , subq_14.metric_time__month AS metric_time__month + , subq_14.metric_time__quarter AS metric_time__quarter + , subq_14.metric_time__year AS metric_time__year + , subq_14.metric_time__extract_year AS metric_time__extract_year + , subq_14.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_14.metric_time__extract_month AS metric_time__extract_month + , subq_14.metric_time__extract_day AS metric_time__extract_day + , subq_14.metric_time__extract_dow AS metric_time__extract_dow + , subq_14.metric_time__extract_doy AS metric_time__extract_doy + , subq_14.account_id AS account_id + , subq_14.customer_id AS customer_id + , subq_14.account_id__customer_id AS account_id__customer_id + , subq_14.bridge_account__account_id AS bridge_account__account_id + , subq_14.bridge_account__customer_id AS bridge_account__customer_id + , subq_14.extra_dim AS extra_dim + , subq_14.account_id__extra_dim AS account_id__extra_dim + , subq_14.bridge_account__extra_dim AS bridge_account__extra_dim + , subq_14.account_customer_combos AS account_customer_combos FROM ( -- Metric Time Dimension 'ds_partitioned' SELECT - subq_4.ds_partitioned__day - , subq_4.ds_partitioned__week - , subq_4.ds_partitioned__month - , subq_4.ds_partitioned__quarter - , subq_4.ds_partitioned__year - , subq_4.ds_partitioned__extract_year - , subq_4.ds_partitioned__extract_quarter - , subq_4.ds_partitioned__extract_month - , subq_4.ds_partitioned__extract_day - , subq_4.ds_partitioned__extract_dow - , subq_4.ds_partitioned__extract_doy - , subq_4.account_id__ds_partitioned__day - , subq_4.account_id__ds_partitioned__week - , subq_4.account_id__ds_partitioned__month - , subq_4.account_id__ds_partitioned__quarter - , subq_4.account_id__ds_partitioned__year - , subq_4.account_id__ds_partitioned__extract_year - , subq_4.account_id__ds_partitioned__extract_quarter - , subq_4.account_id__ds_partitioned__extract_month - , subq_4.account_id__ds_partitioned__extract_day - , subq_4.account_id__ds_partitioned__extract_dow - , subq_4.account_id__ds_partitioned__extract_doy - , subq_4.bridge_account__ds_partitioned__day - , subq_4.bridge_account__ds_partitioned__week - , subq_4.bridge_account__ds_partitioned__month - , subq_4.bridge_account__ds_partitioned__quarter - , subq_4.bridge_account__ds_partitioned__year - , subq_4.bridge_account__ds_partitioned__extract_year - , subq_4.bridge_account__ds_partitioned__extract_quarter - , subq_4.bridge_account__ds_partitioned__extract_month - , subq_4.bridge_account__ds_partitioned__extract_day - , subq_4.bridge_account__ds_partitioned__extract_dow - , subq_4.bridge_account__ds_partitioned__extract_doy - , subq_4.ds_partitioned__day AS metric_time__day - , subq_4.ds_partitioned__week AS metric_time__week - , subq_4.ds_partitioned__month AS metric_time__month - , subq_4.ds_partitioned__quarter AS metric_time__quarter - , subq_4.ds_partitioned__year AS metric_time__year - , subq_4.ds_partitioned__extract_year AS metric_time__extract_year - , subq_4.ds_partitioned__extract_quarter AS metric_time__extract_quarter - , subq_4.ds_partitioned__extract_month AS metric_time__extract_month - , subq_4.ds_partitioned__extract_day AS metric_time__extract_day - , subq_4.ds_partitioned__extract_dow AS metric_time__extract_dow - , subq_4.ds_partitioned__extract_doy AS metric_time__extract_doy - , subq_4.account_id - , subq_4.customer_id - , subq_4.account_id__customer_id - , subq_4.bridge_account__account_id - , subq_4.bridge_account__customer_id - , subq_4.extra_dim - , subq_4.account_id__extra_dim - , subq_4.bridge_account__extra_dim - , subq_4.account_customer_combos + subq_13.ds_partitioned__day + , subq_13.ds_partitioned__week + , subq_13.ds_partitioned__month + , subq_13.ds_partitioned__quarter + , subq_13.ds_partitioned__year + , subq_13.ds_partitioned__extract_year + , subq_13.ds_partitioned__extract_quarter + , subq_13.ds_partitioned__extract_month + , subq_13.ds_partitioned__extract_day + , subq_13.ds_partitioned__extract_dow + , subq_13.ds_partitioned__extract_doy + , subq_13.account_id__ds_partitioned__day + , subq_13.account_id__ds_partitioned__week + , subq_13.account_id__ds_partitioned__month + , subq_13.account_id__ds_partitioned__quarter + , subq_13.account_id__ds_partitioned__year + , subq_13.account_id__ds_partitioned__extract_year + , subq_13.account_id__ds_partitioned__extract_quarter + , subq_13.account_id__ds_partitioned__extract_month + , subq_13.account_id__ds_partitioned__extract_day + , subq_13.account_id__ds_partitioned__extract_dow + , subq_13.account_id__ds_partitioned__extract_doy + , subq_13.bridge_account__ds_partitioned__day + , subq_13.bridge_account__ds_partitioned__week + , subq_13.bridge_account__ds_partitioned__month + , subq_13.bridge_account__ds_partitioned__quarter + , subq_13.bridge_account__ds_partitioned__year + , subq_13.bridge_account__ds_partitioned__extract_year + , subq_13.bridge_account__ds_partitioned__extract_quarter + , subq_13.bridge_account__ds_partitioned__extract_month + , subq_13.bridge_account__ds_partitioned__extract_day + , subq_13.bridge_account__ds_partitioned__extract_dow + , subq_13.bridge_account__ds_partitioned__extract_doy + , subq_13.ds_partitioned__day AS metric_time__day + , subq_13.ds_partitioned__week AS metric_time__week + , subq_13.ds_partitioned__month AS metric_time__month + , subq_13.ds_partitioned__quarter AS metric_time__quarter + , subq_13.ds_partitioned__year AS metric_time__year + , subq_13.ds_partitioned__extract_year AS metric_time__extract_year + , subq_13.ds_partitioned__extract_quarter AS metric_time__extract_quarter + , subq_13.ds_partitioned__extract_month AS metric_time__extract_month + , subq_13.ds_partitioned__extract_day AS metric_time__extract_day + , subq_13.ds_partitioned__extract_dow AS metric_time__extract_dow + , subq_13.ds_partitioned__extract_doy AS metric_time__extract_doy + , subq_13.account_id + , subq_13.customer_id + , subq_13.account_id__customer_id + , subq_13.bridge_account__account_id + , subq_13.bridge_account__customer_id + , subq_13.extra_dim + , subq_13.account_id__extra_dim + , subq_13.bridge_account__extra_dim + , subq_13.account_customer_combos FROM ( -- Read Elements From Semantic Model 'bridge_table' SELECT @@ -572,8 +572,8 @@ FROM ( , bridge_table_src_22000.account_id AS bridge_account__account_id , bridge_table_src_22000.customer_id AS bridge_account__customer_id FROM ***************************.bridge_table bridge_table_src_22000 - ) subq_4 - ) subq_5 + ) subq_13 + ) subq_14 LEFT OUTER JOIN ( -- Pass Only Elements: [ -- 'country', @@ -629,112 +629,112 @@ FROM ( -- 'customer_third_hop_id__customer_id', -- ] SELECT - subq_7.acquired_ds__day - , subq_7.acquired_ds__week - , subq_7.acquired_ds__month - , subq_7.acquired_ds__quarter - , subq_7.acquired_ds__year - , subq_7.acquired_ds__extract_year - , subq_7.acquired_ds__extract_quarter - , subq_7.acquired_ds__extract_month - , subq_7.acquired_ds__extract_day - , subq_7.acquired_ds__extract_dow - , subq_7.acquired_ds__extract_doy - , subq_7.customer_id__acquired_ds__day - , subq_7.customer_id__acquired_ds__week - , subq_7.customer_id__acquired_ds__month - , subq_7.customer_id__acquired_ds__quarter - , subq_7.customer_id__acquired_ds__year - , subq_7.customer_id__acquired_ds__extract_year - , subq_7.customer_id__acquired_ds__extract_quarter - , subq_7.customer_id__acquired_ds__extract_month - , subq_7.customer_id__acquired_ds__extract_day - , subq_7.customer_id__acquired_ds__extract_dow - , subq_7.customer_id__acquired_ds__extract_doy - , subq_7.customer_third_hop_id__acquired_ds__day - , subq_7.customer_third_hop_id__acquired_ds__week - , subq_7.customer_third_hop_id__acquired_ds__month - , subq_7.customer_third_hop_id__acquired_ds__quarter - , subq_7.customer_third_hop_id__acquired_ds__year - , subq_7.customer_third_hop_id__acquired_ds__extract_year - , subq_7.customer_third_hop_id__acquired_ds__extract_quarter - , subq_7.customer_third_hop_id__acquired_ds__extract_month - , subq_7.customer_third_hop_id__acquired_ds__extract_day - , subq_7.customer_third_hop_id__acquired_ds__extract_dow - , subq_7.customer_third_hop_id__acquired_ds__extract_doy - , subq_7.metric_time__day - , subq_7.metric_time__week - , subq_7.metric_time__month - , subq_7.metric_time__quarter - , subq_7.metric_time__year - , subq_7.metric_time__extract_year - , subq_7.metric_time__extract_quarter - , subq_7.metric_time__extract_month - , subq_7.metric_time__extract_day - , subq_7.metric_time__extract_dow - , subq_7.metric_time__extract_doy - , subq_7.customer_id - , subq_7.customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id - , subq_7.customer_third_hop_id__customer_id - , subq_7.country - , subq_7.customer_id__country - , subq_7.customer_third_hop_id__country + subq_16.acquired_ds__day + , subq_16.acquired_ds__week + , subq_16.acquired_ds__month + , subq_16.acquired_ds__quarter + , subq_16.acquired_ds__year + , subq_16.acquired_ds__extract_year + , subq_16.acquired_ds__extract_quarter + , subq_16.acquired_ds__extract_month + , subq_16.acquired_ds__extract_day + , subq_16.acquired_ds__extract_dow + , subq_16.acquired_ds__extract_doy + , subq_16.customer_id__acquired_ds__day + , subq_16.customer_id__acquired_ds__week + , subq_16.customer_id__acquired_ds__month + , subq_16.customer_id__acquired_ds__quarter + , subq_16.customer_id__acquired_ds__year + , subq_16.customer_id__acquired_ds__extract_year + , subq_16.customer_id__acquired_ds__extract_quarter + , subq_16.customer_id__acquired_ds__extract_month + , subq_16.customer_id__acquired_ds__extract_day + , subq_16.customer_id__acquired_ds__extract_dow + , subq_16.customer_id__acquired_ds__extract_doy + , subq_16.customer_third_hop_id__acquired_ds__day + , subq_16.customer_third_hop_id__acquired_ds__week + , subq_16.customer_third_hop_id__acquired_ds__month + , subq_16.customer_third_hop_id__acquired_ds__quarter + , subq_16.customer_third_hop_id__acquired_ds__year + , subq_16.customer_third_hop_id__acquired_ds__extract_year + , subq_16.customer_third_hop_id__acquired_ds__extract_quarter + , subq_16.customer_third_hop_id__acquired_ds__extract_month + , subq_16.customer_third_hop_id__acquired_ds__extract_day + , subq_16.customer_third_hop_id__acquired_ds__extract_dow + , subq_16.customer_third_hop_id__acquired_ds__extract_doy + , subq_16.metric_time__day + , subq_16.metric_time__week + , subq_16.metric_time__month + , subq_16.metric_time__quarter + , subq_16.metric_time__year + , subq_16.metric_time__extract_year + , subq_16.metric_time__extract_quarter + , subq_16.metric_time__extract_month + , subq_16.metric_time__extract_day + , subq_16.metric_time__extract_dow + , subq_16.metric_time__extract_doy + , subq_16.customer_id + , subq_16.customer_third_hop_id + , subq_16.customer_id__customer_third_hop_id + , subq_16.customer_third_hop_id__customer_id + , subq_16.country + , subq_16.customer_id__country + , subq_16.customer_third_hop_id__country FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_6.acquired_ds__day - , subq_6.acquired_ds__week - , subq_6.acquired_ds__month - , subq_6.acquired_ds__quarter - , subq_6.acquired_ds__year - , subq_6.acquired_ds__extract_year - , subq_6.acquired_ds__extract_quarter - , subq_6.acquired_ds__extract_month - , subq_6.acquired_ds__extract_day - , subq_6.acquired_ds__extract_dow - , subq_6.acquired_ds__extract_doy - , subq_6.customer_id__acquired_ds__day - , subq_6.customer_id__acquired_ds__week - , subq_6.customer_id__acquired_ds__month - , subq_6.customer_id__acquired_ds__quarter - , subq_6.customer_id__acquired_ds__year - , subq_6.customer_id__acquired_ds__extract_year - , subq_6.customer_id__acquired_ds__extract_quarter - , subq_6.customer_id__acquired_ds__extract_month - , subq_6.customer_id__acquired_ds__extract_day - , subq_6.customer_id__acquired_ds__extract_dow - , subq_6.customer_id__acquired_ds__extract_doy - , subq_6.customer_third_hop_id__acquired_ds__day - , subq_6.customer_third_hop_id__acquired_ds__week - , subq_6.customer_third_hop_id__acquired_ds__month - , subq_6.customer_third_hop_id__acquired_ds__quarter - , subq_6.customer_third_hop_id__acquired_ds__year - , subq_6.customer_third_hop_id__acquired_ds__extract_year - , subq_6.customer_third_hop_id__acquired_ds__extract_quarter - , subq_6.customer_third_hop_id__acquired_ds__extract_month - , subq_6.customer_third_hop_id__acquired_ds__extract_day - , subq_6.customer_third_hop_id__acquired_ds__extract_dow - , subq_6.customer_third_hop_id__acquired_ds__extract_doy - , subq_6.acquired_ds__day AS metric_time__day - , subq_6.acquired_ds__week AS metric_time__week - , subq_6.acquired_ds__month AS metric_time__month - , subq_6.acquired_ds__quarter AS metric_time__quarter - , subq_6.acquired_ds__year AS metric_time__year - , subq_6.acquired_ds__extract_year AS metric_time__extract_year - , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_6.acquired_ds__extract_month AS metric_time__extract_month - , subq_6.acquired_ds__extract_day AS metric_time__extract_day - , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_6.customer_id - , subq_6.customer_third_hop_id - , subq_6.customer_id__customer_third_hop_id - , subq_6.customer_third_hop_id__customer_id - , subq_6.country - , subq_6.customer_id__country - , subq_6.customer_third_hop_id__country - , subq_6.customers_with_other_data + subq_15.acquired_ds__day + , subq_15.acquired_ds__week + , subq_15.acquired_ds__month + , subq_15.acquired_ds__quarter + , subq_15.acquired_ds__year + , subq_15.acquired_ds__extract_year + , subq_15.acquired_ds__extract_quarter + , subq_15.acquired_ds__extract_month + , subq_15.acquired_ds__extract_day + , subq_15.acquired_ds__extract_dow + , subq_15.acquired_ds__extract_doy + , subq_15.customer_id__acquired_ds__day + , subq_15.customer_id__acquired_ds__week + , subq_15.customer_id__acquired_ds__month + , subq_15.customer_id__acquired_ds__quarter + , subq_15.customer_id__acquired_ds__year + , subq_15.customer_id__acquired_ds__extract_year + , subq_15.customer_id__acquired_ds__extract_quarter + , subq_15.customer_id__acquired_ds__extract_month + , subq_15.customer_id__acquired_ds__extract_day + , subq_15.customer_id__acquired_ds__extract_dow + , subq_15.customer_id__acquired_ds__extract_doy + , subq_15.customer_third_hop_id__acquired_ds__day + , subq_15.customer_third_hop_id__acquired_ds__week + , subq_15.customer_third_hop_id__acquired_ds__month + , subq_15.customer_third_hop_id__acquired_ds__quarter + , subq_15.customer_third_hop_id__acquired_ds__year + , subq_15.customer_third_hop_id__acquired_ds__extract_year + , subq_15.customer_third_hop_id__acquired_ds__extract_quarter + , subq_15.customer_third_hop_id__acquired_ds__extract_month + , subq_15.customer_third_hop_id__acquired_ds__extract_day + , subq_15.customer_third_hop_id__acquired_ds__extract_dow + , subq_15.customer_third_hop_id__acquired_ds__extract_doy + , subq_15.acquired_ds__day AS metric_time__day + , subq_15.acquired_ds__week AS metric_time__week + , subq_15.acquired_ds__month AS metric_time__month + , subq_15.acquired_ds__quarter AS metric_time__quarter + , subq_15.acquired_ds__year AS metric_time__year + , subq_15.acquired_ds__extract_year AS metric_time__extract_year + , subq_15.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_15.acquired_ds__extract_month AS metric_time__extract_month + , subq_15.acquired_ds__extract_day AS metric_time__extract_day + , subq_15.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_15.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_15.customer_id + , subq_15.customer_third_hop_id + , subq_15.customer_id__customer_third_hop_id + , subq_15.customer_third_hop_id__customer_id + , subq_15.country + , subq_15.customer_id__country + , subq_15.customer_third_hop_id__country + , subq_15.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -780,30 +780,30 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_6 - ) subq_7 - ) subq_8 + ) subq_15 + ) subq_16 + ) subq_17 ON - subq_5.customer_id = subq_8.customer_id - ) subq_9 - ) subq_10 + subq_14.customer_id = subq_17.customer_id + ) subq_18 + ) subq_19 ON ( - subq_3.account_id = subq_10.account_id + subq_12.account_id = subq_19.account_id ) AND ( - subq_3.ds_partitioned__day = subq_10.ds_partitioned__day + subq_12.ds_partitioned__day = subq_19.ds_partitioned__day ) - ) subq_11 - ) subq_12 + ) subq_20 + ) subq_21 GROUP BY - subq_12.account_id__customer_id__customer_third_hop_id - ) subq_13 - ) subq_14 - ) subq_15 + subq_21.account_id__customer_id__customer_third_hop_id + ) subq_22 + ) subq_23 + ) subq_24 ON - subq_1.customer_third_hop_id = subq_15.account_id__customer_id__customer_third_hop_id - ) subq_16 + subq_10.customer_third_hop_id = subq_24.account_id__customer_id__customer_third_hop_id + ) subq_25 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 - ) subq_17 - ) subq_18 -) subq_19 + ) subq_26 + ) subq_27 +) subq_28 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0_optimized.sql index ae0625a961..41e3f6f375 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_multi_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_35.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count + subq_44.account_id__customer_id__customer_third_hop_id__txn_count AS customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -23,7 +23,7 @@ FROM ( -- Compute Metrics via Expressions -- Pass Only Elements: ['account_id__customer_id__customer_third_hop_id', 'account_id__customer_id__customer_third_hop_id__txn_count'] SELECT - subq_30.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id + subq_39.customer_id__customer_third_hop_id AS account_id__customer_id__customer_third_hop_id , SUM(account_month_txns_src_22000.txn_count) AS account_id__customer_id__customer_third_hop_id__txn_count FROM ***************************.account_month_txns account_month_txns_src_22000 LEFT OUTER JOIN ( @@ -38,17 +38,17 @@ FROM ( ***************************.customer_other_data customer_other_data_src_22000 ON bridge_table_src_22000.customer_id = customer_other_data_src_22000.customer_id - ) subq_30 + ) subq_39 ON ( - account_month_txns_src_22000.account_id = subq_30.account_id + account_month_txns_src_22000.account_id = subq_39.account_id ) AND ( - DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_30.ds_partitioned__day + DATE_TRUNC('day', account_month_txns_src_22000.ds_partitioned) = subq_39.ds_partitioned__day ) GROUP BY - subq_30.customer_id__customer_third_hop_id - ) subq_35 + subq_39.customer_id__customer_third_hop_id + ) subq_44 ON - third_hop_table_src_22000.customer_third_hop_id = subq_35.account_id__customer_id__customer_third_hop_id -) subq_36 + third_hop_table_src_22000.customer_third_hop_id = subq_44.account_id__customer_id__customer_third_hop_id +) subq_45 WHERE customer_third_hop_id__account_id__customer_id__customer_third_hop_id__txn_count > 2 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0.sql index 633525bb1c..feeee07026 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0.sql @@ -6,139 +6,139 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_12.third_hop_count + subq_16.third_hop_count FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_11.third_hop_count) AS third_hop_count + COUNT(DISTINCT subq_15.third_hop_count) AS third_hop_count FROM ( -- Pass Only Elements: ['third_hop_count',] SELECT - subq_10.third_hop_count + subq_14.third_hop_count FROM ( -- Constrain Output with WHERE SELECT - subq_9.third_hop_ds__day - , subq_9.third_hop_ds__week - , subq_9.third_hop_ds__month - , subq_9.third_hop_ds__quarter - , subq_9.third_hop_ds__year - , subq_9.third_hop_ds__extract_year - , subq_9.third_hop_ds__extract_quarter - , subq_9.third_hop_ds__extract_month - , subq_9.third_hop_ds__extract_day - , subq_9.third_hop_ds__extract_dow - , subq_9.third_hop_ds__extract_doy - , subq_9.customer_third_hop_id__third_hop_ds__day - , subq_9.customer_third_hop_id__third_hop_ds__week - , subq_9.customer_third_hop_id__third_hop_ds__month - , subq_9.customer_third_hop_id__third_hop_ds__quarter - , subq_9.customer_third_hop_id__third_hop_ds__year - , subq_9.customer_third_hop_id__third_hop_ds__extract_year - , subq_9.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_9.customer_third_hop_id__third_hop_ds__extract_month - , subq_9.customer_third_hop_id__third_hop_ds__extract_day - , subq_9.customer_third_hop_id__third_hop_ds__extract_dow - , subq_9.customer_third_hop_id__third_hop_ds__extract_doy - , subq_9.metric_time__day - , subq_9.metric_time__week - , subq_9.metric_time__month - , subq_9.metric_time__quarter - , subq_9.metric_time__year - , subq_9.metric_time__extract_year - , subq_9.metric_time__extract_quarter - , subq_9.metric_time__extract_month - , subq_9.metric_time__extract_day - , subq_9.metric_time__extract_dow - , subq_9.metric_time__extract_doy - , subq_9.customer_third_hop_id - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id - , subq_9.value - , subq_9.customer_third_hop_id__value - , subq_9.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_9.third_hop_count + subq_13.third_hop_ds__day + , subq_13.third_hop_ds__week + , subq_13.third_hop_ds__month + , subq_13.third_hop_ds__quarter + , subq_13.third_hop_ds__year + , subq_13.third_hop_ds__extract_year + , subq_13.third_hop_ds__extract_quarter + , subq_13.third_hop_ds__extract_month + , subq_13.third_hop_ds__extract_day + , subq_13.third_hop_ds__extract_dow + , subq_13.third_hop_ds__extract_doy + , subq_13.customer_third_hop_id__third_hop_ds__day + , subq_13.customer_third_hop_id__third_hop_ds__week + , subq_13.customer_third_hop_id__third_hop_ds__month + , subq_13.customer_third_hop_id__third_hop_ds__quarter + , subq_13.customer_third_hop_id__third_hop_ds__year + , subq_13.customer_third_hop_id__third_hop_ds__extract_year + , subq_13.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_13.customer_third_hop_id__third_hop_ds__extract_month + , subq_13.customer_third_hop_id__third_hop_ds__extract_day + , subq_13.customer_third_hop_id__third_hop_ds__extract_dow + , subq_13.customer_third_hop_id__third_hop_ds__extract_doy + , subq_13.metric_time__day + , subq_13.metric_time__week + , subq_13.metric_time__month + , subq_13.metric_time__quarter + , subq_13.metric_time__year + , subq_13.metric_time__extract_year + , subq_13.metric_time__extract_quarter + , subq_13.metric_time__extract_month + , subq_13.metric_time__extract_day + , subq_13.metric_time__extract_dow + , subq_13.metric_time__extract_doy + , subq_13.customer_third_hop_id + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id + , subq_13.value + , subq_13.customer_third_hop_id__value + , subq_13.customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_13.third_hop_count FROM ( -- Join Standard Outputs SELECT - subq_8.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id - , subq_8.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers - , subq_1.third_hop_ds__day AS third_hop_ds__day - , subq_1.third_hop_ds__week AS third_hop_ds__week - , subq_1.third_hop_ds__month AS third_hop_ds__month - , subq_1.third_hop_ds__quarter AS third_hop_ds__quarter - , subq_1.third_hop_ds__year AS third_hop_ds__year - , subq_1.third_hop_ds__extract_year AS third_hop_ds__extract_year - , subq_1.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter - , subq_1.third_hop_ds__extract_month AS third_hop_ds__extract_month - , subq_1.third_hop_ds__extract_day AS third_hop_ds__extract_day - , subq_1.third_hop_ds__extract_dow AS third_hop_ds__extract_dow - , subq_1.third_hop_ds__extract_doy AS third_hop_ds__extract_doy - , subq_1.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day - , subq_1.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week - , subq_1.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month - , subq_1.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter - , subq_1.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year - , subq_1.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year - , subq_1.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter - , subq_1.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month - , subq_1.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day - , subq_1.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow - , subq_1.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.customer_third_hop_id AS customer_third_hop_id - , subq_1.value AS value - , subq_1.customer_third_hop_id__value AS customer_third_hop_id__value - , subq_1.third_hop_count AS third_hop_count + subq_12.customer_id__customer_third_hop_id AS customer_third_hop_id__customer_id__customer_third_hop_id + , subq_12.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + , subq_5.third_hop_ds__day AS third_hop_ds__day + , subq_5.third_hop_ds__week AS third_hop_ds__week + , subq_5.third_hop_ds__month AS third_hop_ds__month + , subq_5.third_hop_ds__quarter AS third_hop_ds__quarter + , subq_5.third_hop_ds__year AS third_hop_ds__year + , subq_5.third_hop_ds__extract_year AS third_hop_ds__extract_year + , subq_5.third_hop_ds__extract_quarter AS third_hop_ds__extract_quarter + , subq_5.third_hop_ds__extract_month AS third_hop_ds__extract_month + , subq_5.third_hop_ds__extract_day AS third_hop_ds__extract_day + , subq_5.third_hop_ds__extract_dow AS third_hop_ds__extract_dow + , subq_5.third_hop_ds__extract_doy AS third_hop_ds__extract_doy + , subq_5.customer_third_hop_id__third_hop_ds__day AS customer_third_hop_id__third_hop_ds__day + , subq_5.customer_third_hop_id__third_hop_ds__week AS customer_third_hop_id__third_hop_ds__week + , subq_5.customer_third_hop_id__third_hop_ds__month AS customer_third_hop_id__third_hop_ds__month + , subq_5.customer_third_hop_id__third_hop_ds__quarter AS customer_third_hop_id__third_hop_ds__quarter + , subq_5.customer_third_hop_id__third_hop_ds__year AS customer_third_hop_id__third_hop_ds__year + , subq_5.customer_third_hop_id__third_hop_ds__extract_year AS customer_third_hop_id__third_hop_ds__extract_year + , subq_5.customer_third_hop_id__third_hop_ds__extract_quarter AS customer_third_hop_id__third_hop_ds__extract_quarter + , subq_5.customer_third_hop_id__third_hop_ds__extract_month AS customer_third_hop_id__third_hop_ds__extract_month + , subq_5.customer_third_hop_id__third_hop_ds__extract_day AS customer_third_hop_id__third_hop_ds__extract_day + , subq_5.customer_third_hop_id__third_hop_ds__extract_dow AS customer_third_hop_id__third_hop_ds__extract_dow + , subq_5.customer_third_hop_id__third_hop_ds__extract_doy AS customer_third_hop_id__third_hop_ds__extract_doy + , subq_5.metric_time__day AS metric_time__day + , subq_5.metric_time__week AS metric_time__week + , subq_5.metric_time__month AS metric_time__month + , subq_5.metric_time__quarter AS metric_time__quarter + , subq_5.metric_time__year AS metric_time__year + , subq_5.metric_time__extract_year AS metric_time__extract_year + , subq_5.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_5.metric_time__extract_month AS metric_time__extract_month + , subq_5.metric_time__extract_day AS metric_time__extract_day + , subq_5.metric_time__extract_dow AS metric_time__extract_dow + , subq_5.metric_time__extract_doy AS metric_time__extract_doy + , subq_5.customer_third_hop_id AS customer_third_hop_id + , subq_5.value AS value + , subq_5.customer_third_hop_id__value AS customer_third_hop_id__value + , subq_5.third_hop_count AS third_hop_count FROM ( -- Metric Time Dimension 'third_hop_ds' SELECT - subq_0.third_hop_ds__day - , subq_0.third_hop_ds__week - , subq_0.third_hop_ds__month - , subq_0.third_hop_ds__quarter - , subq_0.third_hop_ds__year - , subq_0.third_hop_ds__extract_year - , subq_0.third_hop_ds__extract_quarter - , subq_0.third_hop_ds__extract_month - , subq_0.third_hop_ds__extract_day - , subq_0.third_hop_ds__extract_dow - , subq_0.third_hop_ds__extract_doy - , subq_0.customer_third_hop_id__third_hop_ds__day - , subq_0.customer_third_hop_id__third_hop_ds__week - , subq_0.customer_third_hop_id__third_hop_ds__month - , subq_0.customer_third_hop_id__third_hop_ds__quarter - , subq_0.customer_third_hop_id__third_hop_ds__year - , subq_0.customer_third_hop_id__third_hop_ds__extract_year - , subq_0.customer_third_hop_id__third_hop_ds__extract_quarter - , subq_0.customer_third_hop_id__third_hop_ds__extract_month - , subq_0.customer_third_hop_id__third_hop_ds__extract_day - , subq_0.customer_third_hop_id__third_hop_ds__extract_dow - , subq_0.customer_third_hop_id__third_hop_ds__extract_doy - , subq_0.third_hop_ds__day AS metric_time__day - , subq_0.third_hop_ds__week AS metric_time__week - , subq_0.third_hop_ds__month AS metric_time__month - , subq_0.third_hop_ds__quarter AS metric_time__quarter - , subq_0.third_hop_ds__year AS metric_time__year - , subq_0.third_hop_ds__extract_year AS metric_time__extract_year - , subq_0.third_hop_ds__extract_quarter AS metric_time__extract_quarter - , subq_0.third_hop_ds__extract_month AS metric_time__extract_month - , subq_0.third_hop_ds__extract_day AS metric_time__extract_day - , subq_0.third_hop_ds__extract_dow AS metric_time__extract_dow - , subq_0.third_hop_ds__extract_doy AS metric_time__extract_doy - , subq_0.customer_third_hop_id - , subq_0.value - , subq_0.customer_third_hop_id__value - , subq_0.third_hop_count + subq_4.third_hop_ds__day + , subq_4.third_hop_ds__week + , subq_4.third_hop_ds__month + , subq_4.third_hop_ds__quarter + , subq_4.third_hop_ds__year + , subq_4.third_hop_ds__extract_year + , subq_4.third_hop_ds__extract_quarter + , subq_4.third_hop_ds__extract_month + , subq_4.third_hop_ds__extract_day + , subq_4.third_hop_ds__extract_dow + , subq_4.third_hop_ds__extract_doy + , subq_4.customer_third_hop_id__third_hop_ds__day + , subq_4.customer_third_hop_id__third_hop_ds__week + , subq_4.customer_third_hop_id__third_hop_ds__month + , subq_4.customer_third_hop_id__third_hop_ds__quarter + , subq_4.customer_third_hop_id__third_hop_ds__year + , subq_4.customer_third_hop_id__third_hop_ds__extract_year + , subq_4.customer_third_hop_id__third_hop_ds__extract_quarter + , subq_4.customer_third_hop_id__third_hop_ds__extract_month + , subq_4.customer_third_hop_id__third_hop_ds__extract_day + , subq_4.customer_third_hop_id__third_hop_ds__extract_dow + , subq_4.customer_third_hop_id__third_hop_ds__extract_doy + , subq_4.third_hop_ds__day AS metric_time__day + , subq_4.third_hop_ds__week AS metric_time__week + , subq_4.third_hop_ds__month AS metric_time__month + , subq_4.third_hop_ds__quarter AS metric_time__quarter + , subq_4.third_hop_ds__year AS metric_time__year + , subq_4.third_hop_ds__extract_year AS metric_time__extract_year + , subq_4.third_hop_ds__extract_quarter AS metric_time__extract_quarter + , subq_4.third_hop_ds__extract_month AS metric_time__extract_month + , subq_4.third_hop_ds__extract_day AS metric_time__extract_day + , subq_4.third_hop_ds__extract_dow AS metric_time__extract_dow + , subq_4.third_hop_ds__extract_doy AS metric_time__extract_doy + , subq_4.customer_third_hop_id + , subq_4.value + , subq_4.customer_third_hop_id__value + , subq_4.third_hop_count FROM ( -- Read Elements From Semantic Model 'third_hop_table' SELECT @@ -169,138 +169,138 @@ FROM ( , EXTRACT(doy FROM third_hop_table_src_22000.third_hop_ds) AS customer_third_hop_id__third_hop_ds__extract_doy , third_hop_table_src_22000.customer_third_hop_id FROM ***************************.third_hop_table third_hop_table_src_22000 - ) subq_0 - ) subq_1 + ) subq_4 + ) subq_5 LEFT OUTER JOIN ( -- Pass Only Elements: ['customer_id__customer_third_hop_id', 'customer_id__customer_third_hop_id__paraguayan_customers'] SELECT - subq_7.customer_id__customer_third_hop_id - , subq_7.customer_id__customer_third_hop_id__paraguayan_customers + subq_11.customer_id__customer_third_hop_id + , subq_11.customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Compute Metrics via Expressions SELECT - subq_6.customer_id__customer_third_hop_id - , subq_6.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers + subq_10.customer_id__customer_third_hop_id + , subq_10.customers_with_other_data AS customer_id__customer_third_hop_id__paraguayan_customers FROM ( -- Aggregate Measures SELECT - subq_5.customer_id__customer_third_hop_id - , SUM(subq_5.customers_with_other_data) AS customers_with_other_data + subq_9.customer_id__customer_third_hop_id + , SUM(subq_9.customers_with_other_data) AS customers_with_other_data FROM ( -- Pass Only Elements: ['customers_with_other_data', 'customer_id__customer_third_hop_id'] SELECT - subq_4.customer_id__customer_third_hop_id - , subq_4.customers_with_other_data + subq_8.customer_id__customer_third_hop_id + , subq_8.customers_with_other_data FROM ( -- Constrain Output with WHERE SELECT - subq_3.acquired_ds__day - , subq_3.acquired_ds__week - , subq_3.acquired_ds__month - , subq_3.acquired_ds__quarter - , subq_3.acquired_ds__year - , subq_3.acquired_ds__extract_year - , subq_3.acquired_ds__extract_quarter - , subq_3.acquired_ds__extract_month - , subq_3.acquired_ds__extract_day - , subq_3.acquired_ds__extract_dow - , subq_3.acquired_ds__extract_doy - , subq_3.customer_id__acquired_ds__day - , subq_3.customer_id__acquired_ds__week - , subq_3.customer_id__acquired_ds__month - , subq_3.customer_id__acquired_ds__quarter - , subq_3.customer_id__acquired_ds__year - , subq_3.customer_id__acquired_ds__extract_year - , subq_3.customer_id__acquired_ds__extract_quarter - , subq_3.customer_id__acquired_ds__extract_month - , subq_3.customer_id__acquired_ds__extract_day - , subq_3.customer_id__acquired_ds__extract_dow - , subq_3.customer_id__acquired_ds__extract_doy - , subq_3.customer_third_hop_id__acquired_ds__day - , subq_3.customer_third_hop_id__acquired_ds__week - , subq_3.customer_third_hop_id__acquired_ds__month - , subq_3.customer_third_hop_id__acquired_ds__quarter - , subq_3.customer_third_hop_id__acquired_ds__year - , subq_3.customer_third_hop_id__acquired_ds__extract_year - , subq_3.customer_third_hop_id__acquired_ds__extract_quarter - , subq_3.customer_third_hop_id__acquired_ds__extract_month - , subq_3.customer_third_hop_id__acquired_ds__extract_day - , subq_3.customer_third_hop_id__acquired_ds__extract_dow - , subq_3.customer_third_hop_id__acquired_ds__extract_doy - , subq_3.metric_time__day - , subq_3.metric_time__week - , subq_3.metric_time__month - , subq_3.metric_time__quarter - , subq_3.metric_time__year - , subq_3.metric_time__extract_year - , subq_3.metric_time__extract_quarter - , subq_3.metric_time__extract_month - , subq_3.metric_time__extract_day - , subq_3.metric_time__extract_dow - , subq_3.metric_time__extract_doy - , subq_3.customer_id - , subq_3.customer_third_hop_id - , subq_3.customer_id__customer_third_hop_id - , subq_3.customer_third_hop_id__customer_id - , subq_3.country - , subq_3.customer_id__country - , subq_3.customer_third_hop_id__country - , subq_3.customers_with_other_data + subq_7.acquired_ds__day + , subq_7.acquired_ds__week + , subq_7.acquired_ds__month + , subq_7.acquired_ds__quarter + , subq_7.acquired_ds__year + , subq_7.acquired_ds__extract_year + , subq_7.acquired_ds__extract_quarter + , subq_7.acquired_ds__extract_month + , subq_7.acquired_ds__extract_day + , subq_7.acquired_ds__extract_dow + , subq_7.acquired_ds__extract_doy + , subq_7.customer_id__acquired_ds__day + , subq_7.customer_id__acquired_ds__week + , subq_7.customer_id__acquired_ds__month + , subq_7.customer_id__acquired_ds__quarter + , subq_7.customer_id__acquired_ds__year + , subq_7.customer_id__acquired_ds__extract_year + , subq_7.customer_id__acquired_ds__extract_quarter + , subq_7.customer_id__acquired_ds__extract_month + , subq_7.customer_id__acquired_ds__extract_day + , subq_7.customer_id__acquired_ds__extract_dow + , subq_7.customer_id__acquired_ds__extract_doy + , subq_7.customer_third_hop_id__acquired_ds__day + , subq_7.customer_third_hop_id__acquired_ds__week + , subq_7.customer_third_hop_id__acquired_ds__month + , subq_7.customer_third_hop_id__acquired_ds__quarter + , subq_7.customer_third_hop_id__acquired_ds__year + , subq_7.customer_third_hop_id__acquired_ds__extract_year + , subq_7.customer_third_hop_id__acquired_ds__extract_quarter + , subq_7.customer_third_hop_id__acquired_ds__extract_month + , subq_7.customer_third_hop_id__acquired_ds__extract_day + , subq_7.customer_third_hop_id__acquired_ds__extract_dow + , subq_7.customer_third_hop_id__acquired_ds__extract_doy + , subq_7.metric_time__day + , subq_7.metric_time__week + , subq_7.metric_time__month + , subq_7.metric_time__quarter + , subq_7.metric_time__year + , subq_7.metric_time__extract_year + , subq_7.metric_time__extract_quarter + , subq_7.metric_time__extract_month + , subq_7.metric_time__extract_day + , subq_7.metric_time__extract_dow + , subq_7.metric_time__extract_doy + , subq_7.customer_id + , subq_7.customer_third_hop_id + , subq_7.customer_id__customer_third_hop_id + , subq_7.customer_third_hop_id__customer_id + , subq_7.country + , subq_7.customer_id__country + , subq_7.customer_third_hop_id__country + , subq_7.customers_with_other_data FROM ( -- Metric Time Dimension 'acquired_ds' SELECT - subq_2.acquired_ds__day - , subq_2.acquired_ds__week - , subq_2.acquired_ds__month - , subq_2.acquired_ds__quarter - , subq_2.acquired_ds__year - , subq_2.acquired_ds__extract_year - , subq_2.acquired_ds__extract_quarter - , subq_2.acquired_ds__extract_month - , subq_2.acquired_ds__extract_day - , subq_2.acquired_ds__extract_dow - , subq_2.acquired_ds__extract_doy - , subq_2.customer_id__acquired_ds__day - , subq_2.customer_id__acquired_ds__week - , subq_2.customer_id__acquired_ds__month - , subq_2.customer_id__acquired_ds__quarter - , subq_2.customer_id__acquired_ds__year - , subq_2.customer_id__acquired_ds__extract_year - , subq_2.customer_id__acquired_ds__extract_quarter - , subq_2.customer_id__acquired_ds__extract_month - , subq_2.customer_id__acquired_ds__extract_day - , subq_2.customer_id__acquired_ds__extract_dow - , subq_2.customer_id__acquired_ds__extract_doy - , subq_2.customer_third_hop_id__acquired_ds__day - , subq_2.customer_third_hop_id__acquired_ds__week - , subq_2.customer_third_hop_id__acquired_ds__month - , subq_2.customer_third_hop_id__acquired_ds__quarter - , subq_2.customer_third_hop_id__acquired_ds__year - , subq_2.customer_third_hop_id__acquired_ds__extract_year - , subq_2.customer_third_hop_id__acquired_ds__extract_quarter - , subq_2.customer_third_hop_id__acquired_ds__extract_month - , subq_2.customer_third_hop_id__acquired_ds__extract_day - , subq_2.customer_third_hop_id__acquired_ds__extract_dow - , subq_2.customer_third_hop_id__acquired_ds__extract_doy - , subq_2.acquired_ds__day AS metric_time__day - , subq_2.acquired_ds__week AS metric_time__week - , subq_2.acquired_ds__month AS metric_time__month - , subq_2.acquired_ds__quarter AS metric_time__quarter - , subq_2.acquired_ds__year AS metric_time__year - , subq_2.acquired_ds__extract_year AS metric_time__extract_year - , subq_2.acquired_ds__extract_quarter AS metric_time__extract_quarter - , subq_2.acquired_ds__extract_month AS metric_time__extract_month - , subq_2.acquired_ds__extract_day AS metric_time__extract_day - , subq_2.acquired_ds__extract_dow AS metric_time__extract_dow - , subq_2.acquired_ds__extract_doy AS metric_time__extract_doy - , subq_2.customer_id - , subq_2.customer_third_hop_id - , subq_2.customer_id__customer_third_hop_id - , subq_2.customer_third_hop_id__customer_id - , subq_2.country - , subq_2.customer_id__country - , subq_2.customer_third_hop_id__country - , subq_2.customers_with_other_data + subq_6.acquired_ds__day + , subq_6.acquired_ds__week + , subq_6.acquired_ds__month + , subq_6.acquired_ds__quarter + , subq_6.acquired_ds__year + , subq_6.acquired_ds__extract_year + , subq_6.acquired_ds__extract_quarter + , subq_6.acquired_ds__extract_month + , subq_6.acquired_ds__extract_day + , subq_6.acquired_ds__extract_dow + , subq_6.acquired_ds__extract_doy + , subq_6.customer_id__acquired_ds__day + , subq_6.customer_id__acquired_ds__week + , subq_6.customer_id__acquired_ds__month + , subq_6.customer_id__acquired_ds__quarter + , subq_6.customer_id__acquired_ds__year + , subq_6.customer_id__acquired_ds__extract_year + , subq_6.customer_id__acquired_ds__extract_quarter + , subq_6.customer_id__acquired_ds__extract_month + , subq_6.customer_id__acquired_ds__extract_day + , subq_6.customer_id__acquired_ds__extract_dow + , subq_6.customer_id__acquired_ds__extract_doy + , subq_6.customer_third_hop_id__acquired_ds__day + , subq_6.customer_third_hop_id__acquired_ds__week + , subq_6.customer_third_hop_id__acquired_ds__month + , subq_6.customer_third_hop_id__acquired_ds__quarter + , subq_6.customer_third_hop_id__acquired_ds__year + , subq_6.customer_third_hop_id__acquired_ds__extract_year + , subq_6.customer_third_hop_id__acquired_ds__extract_quarter + , subq_6.customer_third_hop_id__acquired_ds__extract_month + , subq_6.customer_third_hop_id__acquired_ds__extract_day + , subq_6.customer_third_hop_id__acquired_ds__extract_dow + , subq_6.customer_third_hop_id__acquired_ds__extract_doy + , subq_6.acquired_ds__day AS metric_time__day + , subq_6.acquired_ds__week AS metric_time__week + , subq_6.acquired_ds__month AS metric_time__month + , subq_6.acquired_ds__quarter AS metric_time__quarter + , subq_6.acquired_ds__year AS metric_time__year + , subq_6.acquired_ds__extract_year AS metric_time__extract_year + , subq_6.acquired_ds__extract_quarter AS metric_time__extract_quarter + , subq_6.acquired_ds__extract_month AS metric_time__extract_month + , subq_6.acquired_ds__extract_day AS metric_time__extract_day + , subq_6.acquired_ds__extract_dow AS metric_time__extract_dow + , subq_6.acquired_ds__extract_doy AS metric_time__extract_doy + , subq_6.customer_id + , subq_6.customer_third_hop_id + , subq_6.customer_id__customer_third_hop_id + , subq_6.customer_third_hop_id__customer_id + , subq_6.country + , subq_6.customer_id__country + , subq_6.customer_third_hop_id__country + , subq_6.customers_with_other_data FROM ( -- Read Elements From Semantic Model 'customer_other_data' SELECT @@ -346,20 +346,20 @@ FROM ( , customer_other_data_src_22000.customer_third_hop_id AS customer_id__customer_third_hop_id , customer_other_data_src_22000.customer_id AS customer_third_hop_id__customer_id FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_2 - ) subq_3 + ) subq_6 + ) subq_7 WHERE customer_id__country = 'paraguay' - ) subq_4 - ) subq_5 + ) subq_8 + ) subq_9 GROUP BY - subq_5.customer_id__customer_third_hop_id - ) subq_6 - ) subq_7 - ) subq_8 + subq_9.customer_id__customer_third_hop_id + ) subq_10 + ) subq_11 + ) subq_12 ON - subq_1.customer_third_hop_id = subq_8.customer_id__customer_third_hop_id - ) subq_9 + subq_5.customer_third_hop_id = subq_12.customer_id__customer_third_hop_id + ) subq_13 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 - ) subq_10 - ) subq_11 -) subq_12 + ) subq_14 + ) subq_15 +) subq_16 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0_optimized.sql index 32d0d4fd48..772f581def 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_inner_query_single_hop__plan0_optimized.sql @@ -13,7 +13,7 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_21.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers + subq_25.customer_id__customer_third_hop_id__paraguayan_customers AS customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers , third_hop_table_src_22000.customer_third_hop_id AS third_hop_count FROM ***************************.third_hop_table third_hop_table_src_22000 LEFT OUTER JOIN ( @@ -33,12 +33,12 @@ FROM ( , country AS customer_id__country , 1 AS customers_with_other_data FROM ***************************.customer_other_data customer_other_data_src_22000 - ) subq_16 + ) subq_20 WHERE customer_id__country = 'paraguay' GROUP BY customer_id__customer_third_hop_id - ) subq_21 + ) subq_25 ON - third_hop_table_src_22000.customer_third_hop_id = subq_21.customer_id__customer_third_hop_id -) subq_22 + third_hop_table_src_22000.customer_third_hop_id = subq_25.customer_id__customer_third_hop_id +) subq_26 WHERE customer_third_hop_id__customer_id__customer_third_hop_id__paraguayan_customers > 0 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0.sql index 611a7aa686..68f06b05c2 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0.sql @@ -6,320 +6,320 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.bookers + subq_13.bookers FROM ( -- Aggregate Measures SELECT - COUNT(DISTINCT subq_10.bookers) AS bookers + COUNT(DISTINCT subq_12.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers',] SELECT - subq_9.bookers + subq_11.bookers FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.ds_partitioned__day - , subq_8.ds_partitioned__week - , subq_8.ds_partitioned__month - , subq_8.ds_partitioned__quarter - , subq_8.ds_partitioned__year - , subq_8.ds_partitioned__extract_year - , subq_8.ds_partitioned__extract_quarter - , subq_8.ds_partitioned__extract_month - , subq_8.ds_partitioned__extract_day - , subq_8.ds_partitioned__extract_dow - , subq_8.ds_partitioned__extract_doy - , subq_8.paid_at__day - , subq_8.paid_at__week - , subq_8.paid_at__month - , subq_8.paid_at__quarter - , subq_8.paid_at__year - , subq_8.paid_at__extract_year - , subq_8.paid_at__extract_quarter - , subq_8.paid_at__extract_month - , subq_8.paid_at__extract_day - , subq_8.paid_at__extract_dow - , subq_8.paid_at__extract_doy - , subq_8.booking__ds__day - , subq_8.booking__ds__week - , subq_8.booking__ds__month - , subq_8.booking__ds__quarter - , subq_8.booking__ds__year - , subq_8.booking__ds__extract_year - , subq_8.booking__ds__extract_quarter - , subq_8.booking__ds__extract_month - , subq_8.booking__ds__extract_day - , subq_8.booking__ds__extract_dow - , subq_8.booking__ds__extract_doy - , subq_8.booking__ds_partitioned__day - , subq_8.booking__ds_partitioned__week - , subq_8.booking__ds_partitioned__month - , subq_8.booking__ds_partitioned__quarter - , subq_8.booking__ds_partitioned__year - , subq_8.booking__ds_partitioned__extract_year - , subq_8.booking__ds_partitioned__extract_quarter - , subq_8.booking__ds_partitioned__extract_month - , subq_8.booking__ds_partitioned__extract_day - , subq_8.booking__ds_partitioned__extract_dow - , subq_8.booking__ds_partitioned__extract_doy - , subq_8.booking__paid_at__day - , subq_8.booking__paid_at__week - , subq_8.booking__paid_at__month - , subq_8.booking__paid_at__quarter - , subq_8.booking__paid_at__year - , subq_8.booking__paid_at__extract_year - , subq_8.booking__paid_at__extract_quarter - , subq_8.booking__paid_at__extract_month - , subq_8.booking__paid_at__extract_day - , subq_8.booking__paid_at__extract_dow - , subq_8.booking__paid_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.guest - , subq_8.host - , subq_8.booking__listing - , subq_8.booking__guest - , subq_8.booking__host - , subq_8.is_instant - , subq_8.booking__is_instant - , subq_8.listing__bookers - , subq_8.bookings - , subq_8.instant_bookings - , subq_8.booking_value - , subq_8.max_booking_value - , subq_8.min_booking_value - , subq_8.bookers - , subq_8.average_booking_value - , subq_8.referred_bookings - , subq_8.median_booking_value - , subq_8.booking_value_p99 - , subq_8.discrete_booking_value_p99 - , subq_8.approximate_continuous_booking_value_p99 - , subq_8.approximate_discrete_booking_value_p99 + subq_10.ds__day + , subq_10.ds__week + , subq_10.ds__month + , subq_10.ds__quarter + , subq_10.ds__year + , subq_10.ds__extract_year + , subq_10.ds__extract_quarter + , subq_10.ds__extract_month + , subq_10.ds__extract_day + , subq_10.ds__extract_dow + , subq_10.ds__extract_doy + , subq_10.ds_partitioned__day + , subq_10.ds_partitioned__week + , subq_10.ds_partitioned__month + , subq_10.ds_partitioned__quarter + , subq_10.ds_partitioned__year + , subq_10.ds_partitioned__extract_year + , subq_10.ds_partitioned__extract_quarter + , subq_10.ds_partitioned__extract_month + , subq_10.ds_partitioned__extract_day + , subq_10.ds_partitioned__extract_dow + , subq_10.ds_partitioned__extract_doy + , subq_10.paid_at__day + , subq_10.paid_at__week + , subq_10.paid_at__month + , subq_10.paid_at__quarter + , subq_10.paid_at__year + , subq_10.paid_at__extract_year + , subq_10.paid_at__extract_quarter + , subq_10.paid_at__extract_month + , subq_10.paid_at__extract_day + , subq_10.paid_at__extract_dow + , subq_10.paid_at__extract_doy + , subq_10.booking__ds__day + , subq_10.booking__ds__week + , subq_10.booking__ds__month + , subq_10.booking__ds__quarter + , subq_10.booking__ds__year + , subq_10.booking__ds__extract_year + , subq_10.booking__ds__extract_quarter + , subq_10.booking__ds__extract_month + , subq_10.booking__ds__extract_day + , subq_10.booking__ds__extract_dow + , subq_10.booking__ds__extract_doy + , subq_10.booking__ds_partitioned__day + , subq_10.booking__ds_partitioned__week + , subq_10.booking__ds_partitioned__month + , subq_10.booking__ds_partitioned__quarter + , subq_10.booking__ds_partitioned__year + , subq_10.booking__ds_partitioned__extract_year + , subq_10.booking__ds_partitioned__extract_quarter + , subq_10.booking__ds_partitioned__extract_month + , subq_10.booking__ds_partitioned__extract_day + , subq_10.booking__ds_partitioned__extract_dow + , subq_10.booking__ds_partitioned__extract_doy + , subq_10.booking__paid_at__day + , subq_10.booking__paid_at__week + , subq_10.booking__paid_at__month + , subq_10.booking__paid_at__quarter + , subq_10.booking__paid_at__year + , subq_10.booking__paid_at__extract_year + , subq_10.booking__paid_at__extract_quarter + , subq_10.booking__paid_at__extract_month + , subq_10.booking__paid_at__extract_day + , subq_10.booking__paid_at__extract_dow + , subq_10.booking__paid_at__extract_doy + , subq_10.metric_time__day + , subq_10.metric_time__week + , subq_10.metric_time__month + , subq_10.metric_time__quarter + , subq_10.metric_time__year + , subq_10.metric_time__extract_year + , subq_10.metric_time__extract_quarter + , subq_10.metric_time__extract_month + , subq_10.metric_time__extract_day + , subq_10.metric_time__extract_dow + , subq_10.metric_time__extract_doy + , subq_10.listing + , subq_10.guest + , subq_10.host + , subq_10.booking__listing + , subq_10.booking__guest + , subq_10.booking__host + , subq_10.is_instant + , subq_10.booking__is_instant + , subq_10.listing__bookers + , subq_10.bookings + , subq_10.instant_bookings + , subq_10.booking_value + , subq_10.max_booking_value + , subq_10.min_booking_value + , subq_10.bookers + , subq_10.average_booking_value + , subq_10.referred_bookings + , subq_10.median_booking_value + , subq_10.booking_value_p99 + , subq_10.discrete_booking_value_p99 + , subq_10.approximate_continuous_booking_value_p99 + , subq_10.approximate_discrete_booking_value_p99 FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.ds_partitioned__day AS ds_partitioned__day - , subq_1.ds_partitioned__week AS ds_partitioned__week - , subq_1.ds_partitioned__month AS ds_partitioned__month - , subq_1.ds_partitioned__quarter AS ds_partitioned__quarter - , subq_1.ds_partitioned__year AS ds_partitioned__year - , subq_1.ds_partitioned__extract_year AS ds_partitioned__extract_year - , subq_1.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter - , subq_1.ds_partitioned__extract_month AS ds_partitioned__extract_month - , subq_1.ds_partitioned__extract_day AS ds_partitioned__extract_day - , subq_1.ds_partitioned__extract_dow AS ds_partitioned__extract_dow - , subq_1.ds_partitioned__extract_doy AS ds_partitioned__extract_doy - , subq_1.paid_at__day AS paid_at__day - , subq_1.paid_at__week AS paid_at__week - , subq_1.paid_at__month AS paid_at__month - , subq_1.paid_at__quarter AS paid_at__quarter - , subq_1.paid_at__year AS paid_at__year - , subq_1.paid_at__extract_year AS paid_at__extract_year - , subq_1.paid_at__extract_quarter AS paid_at__extract_quarter - , subq_1.paid_at__extract_month AS paid_at__extract_month - , subq_1.paid_at__extract_day AS paid_at__extract_day - , subq_1.paid_at__extract_dow AS paid_at__extract_dow - , subq_1.paid_at__extract_doy AS paid_at__extract_doy - , subq_1.booking__ds__day AS booking__ds__day - , subq_1.booking__ds__week AS booking__ds__week - , subq_1.booking__ds__month AS booking__ds__month - , subq_1.booking__ds__quarter AS booking__ds__quarter - , subq_1.booking__ds__year AS booking__ds__year - , subq_1.booking__ds__extract_year AS booking__ds__extract_year - , subq_1.booking__ds__extract_quarter AS booking__ds__extract_quarter - , subq_1.booking__ds__extract_month AS booking__ds__extract_month - , subq_1.booking__ds__extract_day AS booking__ds__extract_day - , subq_1.booking__ds__extract_dow AS booking__ds__extract_dow - , subq_1.booking__ds__extract_doy AS booking__ds__extract_doy - , subq_1.booking__ds_partitioned__day AS booking__ds_partitioned__day - , subq_1.booking__ds_partitioned__week AS booking__ds_partitioned__week - , subq_1.booking__ds_partitioned__month AS booking__ds_partitioned__month - , subq_1.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter - , subq_1.booking__ds_partitioned__year AS booking__ds_partitioned__year - , subq_1.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year - , subq_1.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter - , subq_1.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month - , subq_1.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day - , subq_1.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow - , subq_1.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy - , subq_1.booking__paid_at__day AS booking__paid_at__day - , subq_1.booking__paid_at__week AS booking__paid_at__week - , subq_1.booking__paid_at__month AS booking__paid_at__month - , subq_1.booking__paid_at__quarter AS booking__paid_at__quarter - , subq_1.booking__paid_at__year AS booking__paid_at__year - , subq_1.booking__paid_at__extract_year AS booking__paid_at__extract_year - , subq_1.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter - , subq_1.booking__paid_at__extract_month AS booking__paid_at__extract_month - , subq_1.booking__paid_at__extract_day AS booking__paid_at__extract_day - , subq_1.booking__paid_at__extract_dow AS booking__paid_at__extract_dow - , subq_1.booking__paid_at__extract_doy AS booking__paid_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.guest AS guest - , subq_1.host AS host - , subq_1.booking__listing AS booking__listing - , subq_1.booking__guest AS booking__guest - , subq_1.booking__host AS booking__host - , subq_1.is_instant AS is_instant - , subq_1.booking__is_instant AS booking__is_instant - , subq_1.bookings AS bookings - , subq_1.instant_bookings AS instant_bookings - , subq_1.booking_value AS booking_value - , subq_1.max_booking_value AS max_booking_value - , subq_1.min_booking_value AS min_booking_value - , subq_1.bookers AS bookers - , subq_1.average_booking_value AS average_booking_value - , subq_1.referred_bookings AS referred_bookings - , subq_1.median_booking_value AS median_booking_value - , subq_1.booking_value_p99 AS booking_value_p99 - , subq_1.discrete_booking_value_p99 AS discrete_booking_value_p99 - , subq_1.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 - , subq_1.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 + subq_9.listing__bookers AS listing__bookers + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.ds_partitioned__day AS ds_partitioned__day + , subq_4.ds_partitioned__week AS ds_partitioned__week + , subq_4.ds_partitioned__month AS ds_partitioned__month + , subq_4.ds_partitioned__quarter AS ds_partitioned__quarter + , subq_4.ds_partitioned__year AS ds_partitioned__year + , subq_4.ds_partitioned__extract_year AS ds_partitioned__extract_year + , subq_4.ds_partitioned__extract_quarter AS ds_partitioned__extract_quarter + , subq_4.ds_partitioned__extract_month AS ds_partitioned__extract_month + , subq_4.ds_partitioned__extract_day AS ds_partitioned__extract_day + , subq_4.ds_partitioned__extract_dow AS ds_partitioned__extract_dow + , subq_4.ds_partitioned__extract_doy AS ds_partitioned__extract_doy + , subq_4.paid_at__day AS paid_at__day + , subq_4.paid_at__week AS paid_at__week + , subq_4.paid_at__month AS paid_at__month + , subq_4.paid_at__quarter AS paid_at__quarter + , subq_4.paid_at__year AS paid_at__year + , subq_4.paid_at__extract_year AS paid_at__extract_year + , subq_4.paid_at__extract_quarter AS paid_at__extract_quarter + , subq_4.paid_at__extract_month AS paid_at__extract_month + , subq_4.paid_at__extract_day AS paid_at__extract_day + , subq_4.paid_at__extract_dow AS paid_at__extract_dow + , subq_4.paid_at__extract_doy AS paid_at__extract_doy + , subq_4.booking__ds__day AS booking__ds__day + , subq_4.booking__ds__week AS booking__ds__week + , subq_4.booking__ds__month AS booking__ds__month + , subq_4.booking__ds__quarter AS booking__ds__quarter + , subq_4.booking__ds__year AS booking__ds__year + , subq_4.booking__ds__extract_year AS booking__ds__extract_year + , subq_4.booking__ds__extract_quarter AS booking__ds__extract_quarter + , subq_4.booking__ds__extract_month AS booking__ds__extract_month + , subq_4.booking__ds__extract_day AS booking__ds__extract_day + , subq_4.booking__ds__extract_dow AS booking__ds__extract_dow + , subq_4.booking__ds__extract_doy AS booking__ds__extract_doy + , subq_4.booking__ds_partitioned__day AS booking__ds_partitioned__day + , subq_4.booking__ds_partitioned__week AS booking__ds_partitioned__week + , subq_4.booking__ds_partitioned__month AS booking__ds_partitioned__month + , subq_4.booking__ds_partitioned__quarter AS booking__ds_partitioned__quarter + , subq_4.booking__ds_partitioned__year AS booking__ds_partitioned__year + , subq_4.booking__ds_partitioned__extract_year AS booking__ds_partitioned__extract_year + , subq_4.booking__ds_partitioned__extract_quarter AS booking__ds_partitioned__extract_quarter + , subq_4.booking__ds_partitioned__extract_month AS booking__ds_partitioned__extract_month + , subq_4.booking__ds_partitioned__extract_day AS booking__ds_partitioned__extract_day + , subq_4.booking__ds_partitioned__extract_dow AS booking__ds_partitioned__extract_dow + , subq_4.booking__ds_partitioned__extract_doy AS booking__ds_partitioned__extract_doy + , subq_4.booking__paid_at__day AS booking__paid_at__day + , subq_4.booking__paid_at__week AS booking__paid_at__week + , subq_4.booking__paid_at__month AS booking__paid_at__month + , subq_4.booking__paid_at__quarter AS booking__paid_at__quarter + , subq_4.booking__paid_at__year AS booking__paid_at__year + , subq_4.booking__paid_at__extract_year AS booking__paid_at__extract_year + , subq_4.booking__paid_at__extract_quarter AS booking__paid_at__extract_quarter + , subq_4.booking__paid_at__extract_month AS booking__paid_at__extract_month + , subq_4.booking__paid_at__extract_day AS booking__paid_at__extract_day + , subq_4.booking__paid_at__extract_dow AS booking__paid_at__extract_dow + , subq_4.booking__paid_at__extract_doy AS booking__paid_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.guest AS guest + , subq_4.host AS host + , subq_4.booking__listing AS booking__listing + , subq_4.booking__guest AS booking__guest + , subq_4.booking__host AS booking__host + , subq_4.is_instant AS is_instant + , subq_4.booking__is_instant AS booking__is_instant + , subq_4.bookings AS bookings + , subq_4.instant_bookings AS instant_bookings + , subq_4.booking_value AS booking_value + , subq_4.max_booking_value AS max_booking_value + , subq_4.min_booking_value AS min_booking_value + , subq_4.bookers AS bookers + , subq_4.average_booking_value AS average_booking_value + , subq_4.referred_bookings AS referred_bookings + , subq_4.median_booking_value AS median_booking_value + , subq_4.booking_value_p99 AS booking_value_p99 + , subq_4.discrete_booking_value_p99 AS discrete_booking_value_p99 + , subq_4.approximate_continuous_booking_value_p99 AS approximate_continuous_booking_value_p99 + , subq_4.approximate_discrete_booking_value_p99 AS approximate_discrete_booking_value_p99 FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.ds_partitioned__day - , subq_0.ds_partitioned__week - , subq_0.ds_partitioned__month - , subq_0.ds_partitioned__quarter - , subq_0.ds_partitioned__year - , subq_0.ds_partitioned__extract_year - , subq_0.ds_partitioned__extract_quarter - , subq_0.ds_partitioned__extract_month - , subq_0.ds_partitioned__extract_day - , subq_0.ds_partitioned__extract_dow - , subq_0.ds_partitioned__extract_doy - , subq_0.paid_at__day - , subq_0.paid_at__week - , subq_0.paid_at__month - , subq_0.paid_at__quarter - , subq_0.paid_at__year - , subq_0.paid_at__extract_year - , subq_0.paid_at__extract_quarter - , subq_0.paid_at__extract_month - , subq_0.paid_at__extract_day - , subq_0.paid_at__extract_dow - , subq_0.paid_at__extract_doy - , subq_0.booking__ds__day - , subq_0.booking__ds__week - , subq_0.booking__ds__month - , subq_0.booking__ds__quarter - , subq_0.booking__ds__year - , subq_0.booking__ds__extract_year - , subq_0.booking__ds__extract_quarter - , subq_0.booking__ds__extract_month - , subq_0.booking__ds__extract_day - , subq_0.booking__ds__extract_dow - , subq_0.booking__ds__extract_doy - , subq_0.booking__ds_partitioned__day - , subq_0.booking__ds_partitioned__week - , subq_0.booking__ds_partitioned__month - , subq_0.booking__ds_partitioned__quarter - , subq_0.booking__ds_partitioned__year - , subq_0.booking__ds_partitioned__extract_year - , subq_0.booking__ds_partitioned__extract_quarter - , subq_0.booking__ds_partitioned__extract_month - , subq_0.booking__ds_partitioned__extract_day - , subq_0.booking__ds_partitioned__extract_dow - , subq_0.booking__ds_partitioned__extract_doy - , subq_0.booking__paid_at__day - , subq_0.booking__paid_at__week - , subq_0.booking__paid_at__month - , subq_0.booking__paid_at__quarter - , subq_0.booking__paid_at__year - , subq_0.booking__paid_at__extract_year - , subq_0.booking__paid_at__extract_quarter - , subq_0.booking__paid_at__extract_month - , subq_0.booking__paid_at__extract_day - , subq_0.booking__paid_at__extract_dow - , subq_0.booking__paid_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.guest - , subq_0.host - , subq_0.booking__listing - , subq_0.booking__guest - , subq_0.booking__host - , subq_0.is_instant - , subq_0.booking__is_instant - , subq_0.bookings - , subq_0.instant_bookings - , subq_0.booking_value - , subq_0.max_booking_value - , subq_0.min_booking_value - , subq_0.bookers - , subq_0.average_booking_value - , subq_0.referred_bookings - , subq_0.median_booking_value - , subq_0.booking_value_p99 - , subq_0.discrete_booking_value_p99 - , subq_0.approximate_continuous_booking_value_p99 - , subq_0.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -412,129 +412,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_6.listing - , subq_6.listing__bookers + subq_8.listing + , subq_8.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookers AS listing__bookers + subq_7.listing + , subq_7.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_4.listing - , COUNT(DISTINCT subq_4.bookers) AS bookers + subq_6.listing + , COUNT(DISTINCT subq_6.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_3.listing - , subq_3.bookers + subq_5.listing + , subq_5.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.ds_partitioned__day + , subq_3.ds_partitioned__week + , subq_3.ds_partitioned__month + , subq_3.ds_partitioned__quarter + , subq_3.ds_partitioned__year + , subq_3.ds_partitioned__extract_year + , subq_3.ds_partitioned__extract_quarter + , subq_3.ds_partitioned__extract_month + , subq_3.ds_partitioned__extract_day + , subq_3.ds_partitioned__extract_dow + , subq_3.ds_partitioned__extract_doy + , subq_3.paid_at__day + , subq_3.paid_at__week + , subq_3.paid_at__month + , subq_3.paid_at__quarter + , subq_3.paid_at__year + , subq_3.paid_at__extract_year + , subq_3.paid_at__extract_quarter + , subq_3.paid_at__extract_month + , subq_3.paid_at__extract_day + , subq_3.paid_at__extract_dow + , subq_3.paid_at__extract_doy + , subq_3.booking__ds__day + , subq_3.booking__ds__week + , subq_3.booking__ds__month + , subq_3.booking__ds__quarter + , subq_3.booking__ds__year + , subq_3.booking__ds__extract_year + , subq_3.booking__ds__extract_quarter + , subq_3.booking__ds__extract_month + , subq_3.booking__ds__extract_day + , subq_3.booking__ds__extract_dow + , subq_3.booking__ds__extract_doy + , subq_3.booking__ds_partitioned__day + , subq_3.booking__ds_partitioned__week + , subq_3.booking__ds_partitioned__month + , subq_3.booking__ds_partitioned__quarter + , subq_3.booking__ds_partitioned__year + , subq_3.booking__ds_partitioned__extract_year + , subq_3.booking__ds_partitioned__extract_quarter + , subq_3.booking__ds_partitioned__extract_month + , subq_3.booking__ds_partitioned__extract_day + , subq_3.booking__ds_partitioned__extract_dow + , subq_3.booking__ds_partitioned__extract_doy + , subq_3.booking__paid_at__day + , subq_3.booking__paid_at__week + , subq_3.booking__paid_at__month + , subq_3.booking__paid_at__quarter + , subq_3.booking__paid_at__year + , subq_3.booking__paid_at__extract_year + , subq_3.booking__paid_at__extract_quarter + , subq_3.booking__paid_at__extract_month + , subq_3.booking__paid_at__extract_day + , subq_3.booking__paid_at__extract_dow + , subq_3.booking__paid_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.guest + , subq_3.host + , subq_3.booking__listing + , subq_3.booking__guest + , subq_3.booking__host + , subq_3.is_instant + , subq_3.booking__is_instant + , subq_3.bookings + , subq_3.instant_bookings + , subq_3.booking_value + , subq_3.max_booking_value + , subq_3.min_booking_value + , subq_3.bookers + , subq_3.average_booking_value + , subq_3.referred_bookings + , subq_3.median_booking_value + , subq_3.booking_value_p99 + , subq_3.discrete_booking_value_p99 + , subq_3.approximate_continuous_booking_value_p99 + , subq_3.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -627,18 +627,18 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_3 + ) subq_5 + ) subq_6 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_6.listing + ) subq_7 + ) subq_8 + ) subq_9 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_9.listing + ) subq_10 WHERE listing__bookers > 1.00 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_11 + ) subq_12 +) subq_13 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0_optimized.sql index 84e97f7c09..b26e069d11 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_filtered_by_itself__plan0_optimized.sql @@ -22,15 +22,15 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_18.listing__bookers AS listing__bookers - , subq_13.bookers AS bookers + subq_20.listing__bookers AS listing__bookers + , subq_15.bookers AS bookers FROM ( -- Read From CTE For node_id=sma_28009 SELECT listing , bookers FROM sma_28009_cte sma_28009_cte - ) subq_13 + ) subq_15 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -43,8 +43,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_18 + ) subq_20 ON - subq_13.listing = subq_18.listing -) subq_19 + subq_15.listing = subq_20.listing +) subq_21 WHERE listing__bookers > 1.00 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql index 7b6419e5af..82e576b28e 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0.sql @@ -6,230 +6,230 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.metric_time__day - , subq_11.listings AS active_listings + subq_14.metric_time__day + , subq_14.listings AS active_listings FROM ( -- Aggregate Measures SELECT - subq_10.metric_time__day - , SUM(subq_10.listings) AS listings + subq_13.metric_time__day + , SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings', 'metric_time__day'] SELECT - subq_9.metric_time__day - , subq_9.listings + subq_12.metric_time__day + , subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.listing__bookings - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.listing__bookings + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.listing__bookings AS listing__bookings + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -290,129 +290,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_9.listing + , subq_9.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_8.listing + , subq_8.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_7.listing + , SUM(subq_7.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_6.listing + , subq_6.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.ds_partitioned__day + , subq_5.ds_partitioned__week + , subq_5.ds_partitioned__month + , subq_5.ds_partitioned__quarter + , subq_5.ds_partitioned__year + , subq_5.ds_partitioned__extract_year + , subq_5.ds_partitioned__extract_quarter + , subq_5.ds_partitioned__extract_month + , subq_5.ds_partitioned__extract_day + , subq_5.ds_partitioned__extract_dow + , subq_5.ds_partitioned__extract_doy + , subq_5.paid_at__day + , subq_5.paid_at__week + , subq_5.paid_at__month + , subq_5.paid_at__quarter + , subq_5.paid_at__year + , subq_5.paid_at__extract_year + , subq_5.paid_at__extract_quarter + , subq_5.paid_at__extract_month + , subq_5.paid_at__extract_day + , subq_5.paid_at__extract_dow + , subq_5.paid_at__extract_doy + , subq_5.booking__ds__day + , subq_5.booking__ds__week + , subq_5.booking__ds__month + , subq_5.booking__ds__quarter + , subq_5.booking__ds__year + , subq_5.booking__ds__extract_year + , subq_5.booking__ds__extract_quarter + , subq_5.booking__ds__extract_month + , subq_5.booking__ds__extract_day + , subq_5.booking__ds__extract_dow + , subq_5.booking__ds__extract_doy + , subq_5.booking__ds_partitioned__day + , subq_5.booking__ds_partitioned__week + , subq_5.booking__ds_partitioned__month + , subq_5.booking__ds_partitioned__quarter + , subq_5.booking__ds_partitioned__year + , subq_5.booking__ds_partitioned__extract_year + , subq_5.booking__ds_partitioned__extract_quarter + , subq_5.booking__ds_partitioned__extract_month + , subq_5.booking__ds_partitioned__extract_day + , subq_5.booking__ds_partitioned__extract_dow + , subq_5.booking__ds_partitioned__extract_doy + , subq_5.booking__paid_at__day + , subq_5.booking__paid_at__week + , subq_5.booking__paid_at__month + , subq_5.booking__paid_at__quarter + , subq_5.booking__paid_at__year + , subq_5.booking__paid_at__extract_year + , subq_5.booking__paid_at__extract_quarter + , subq_5.booking__paid_at__extract_month + , subq_5.booking__paid_at__extract_day + , subq_5.booking__paid_at__extract_dow + , subq_5.booking__paid_at__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.listing + , subq_5.guest + , subq_5.host + , subq_5.booking__listing + , subq_5.booking__guest + , subq_5.booking__host + , subq_5.is_instant + , subq_5.booking__is_instant + , subq_5.bookings + , subq_5.instant_bookings + , subq_5.booking_value + , subq_5.max_booking_value + , subq_5.min_booking_value + , subq_5.bookers + , subq_5.average_booking_value + , subq_5.referred_bookings + , subq_5.median_booking_value + , subq_5.booking_value_p99 + , subq_5.discrete_booking_value_p99 + , subq_5.approximate_continuous_booking_value_p99 + , subq_5.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -505,20 +505,20 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_7.listing + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.listing = subq_7.listing - ) subq_8 + subq_4.listing = subq_10.listing + ) subq_11 WHERE listing__bookings > 2 - ) subq_9 - ) subq_10 + ) subq_12 + ) subq_13 GROUP BY - subq_10.metric_time__day -) subq_11 + subq_13.metric_time__day +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql index 27e287e276..0d1fe1ee20 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_metric_with_metric_in_where_filter__plan0_optimized.sql @@ -14,9 +14,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.listing__bookings AS listing__bookings - , subq_13.metric_time__day AS metric_time__day - , subq_13.listings AS listings + subq_22.listing__bookings AS listing__bookings + , subq_16.metric_time__day AS metric_time__day + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -25,7 +25,7 @@ FROM ( , listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -41,13 +41,13 @@ FROM ( listing_id AS listing , 1 AS bookings FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_16 + ) subq_19 GROUP BY listing - ) subq_19 + ) subq_22 ON - subq_13.listing = subq_19.listing -) subq_20 + subq_16.listing = subq_22.listing +) subq_23 WHERE listing__bookings > 2 GROUP BY metric_time__day diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql index 9bddc50bd9..57355ac070 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0.sql @@ -8,227 +8,227 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_11.listings + subq_14.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_10.listings) AS listings + SUM(subq_13.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_9.listings + subq_12.listings FROM ( -- Constrain Output with WHERE SELECT - subq_8.ds__day - , subq_8.ds__week - , subq_8.ds__month - , subq_8.ds__quarter - , subq_8.ds__year - , subq_8.ds__extract_year - , subq_8.ds__extract_quarter - , subq_8.ds__extract_month - , subq_8.ds__extract_day - , subq_8.ds__extract_dow - , subq_8.ds__extract_doy - , subq_8.created_at__day - , subq_8.created_at__week - , subq_8.created_at__month - , subq_8.created_at__quarter - , subq_8.created_at__year - , subq_8.created_at__extract_year - , subq_8.created_at__extract_quarter - , subq_8.created_at__extract_month - , subq_8.created_at__extract_day - , subq_8.created_at__extract_dow - , subq_8.created_at__extract_doy - , subq_8.listing__ds__day - , subq_8.listing__ds__week - , subq_8.listing__ds__month - , subq_8.listing__ds__quarter - , subq_8.listing__ds__year - , subq_8.listing__ds__extract_year - , subq_8.listing__ds__extract_quarter - , subq_8.listing__ds__extract_month - , subq_8.listing__ds__extract_day - , subq_8.listing__ds__extract_dow - , subq_8.listing__ds__extract_doy - , subq_8.listing__created_at__day - , subq_8.listing__created_at__week - , subq_8.listing__created_at__month - , subq_8.listing__created_at__quarter - , subq_8.listing__created_at__year - , subq_8.listing__created_at__extract_year - , subq_8.listing__created_at__extract_quarter - , subq_8.listing__created_at__extract_month - , subq_8.listing__created_at__extract_day - , subq_8.listing__created_at__extract_dow - , subq_8.listing__created_at__extract_doy - , subq_8.metric_time__day - , subq_8.metric_time__week - , subq_8.metric_time__month - , subq_8.metric_time__quarter - , subq_8.metric_time__year - , subq_8.metric_time__extract_year - , subq_8.metric_time__extract_quarter - , subq_8.metric_time__extract_month - , subq_8.metric_time__extract_day - , subq_8.metric_time__extract_dow - , subq_8.metric_time__extract_doy - , subq_8.listing - , subq_8.user - , subq_8.listing__user - , subq_8.country_latest - , subq_8.is_lux_latest - , subq_8.capacity_latest - , subq_8.listing__country_latest - , subq_8.listing__is_lux_latest - , subq_8.listing__capacity_latest - , subq_8.user__revenue_all_time - , subq_8.listings - , subq_8.largest_listing - , subq_8.smallest_listing + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.created_at__day + , subq_11.created_at__week + , subq_11.created_at__month + , subq_11.created_at__quarter + , subq_11.created_at__year + , subq_11.created_at__extract_year + , subq_11.created_at__extract_quarter + , subq_11.created_at__extract_month + , subq_11.created_at__extract_day + , subq_11.created_at__extract_dow + , subq_11.created_at__extract_doy + , subq_11.listing__ds__day + , subq_11.listing__ds__week + , subq_11.listing__ds__month + , subq_11.listing__ds__quarter + , subq_11.listing__ds__year + , subq_11.listing__ds__extract_year + , subq_11.listing__ds__extract_quarter + , subq_11.listing__ds__extract_month + , subq_11.listing__ds__extract_day + , subq_11.listing__ds__extract_dow + , subq_11.listing__ds__extract_doy + , subq_11.listing__created_at__day + , subq_11.listing__created_at__week + , subq_11.listing__created_at__month + , subq_11.listing__created_at__quarter + , subq_11.listing__created_at__year + , subq_11.listing__created_at__extract_year + , subq_11.listing__created_at__extract_quarter + , subq_11.listing__created_at__extract_month + , subq_11.listing__created_at__extract_day + , subq_11.listing__created_at__extract_dow + , subq_11.listing__created_at__extract_doy + , subq_11.metric_time__day + , subq_11.metric_time__week + , subq_11.metric_time__month + , subq_11.metric_time__quarter + , subq_11.metric_time__year + , subq_11.metric_time__extract_year + , subq_11.metric_time__extract_quarter + , subq_11.metric_time__extract_month + , subq_11.metric_time__extract_day + , subq_11.metric_time__extract_dow + , subq_11.metric_time__extract_doy + , subq_11.listing + , subq_11.user + , subq_11.listing__user + , subq_11.country_latest + , subq_11.is_lux_latest + , subq_11.capacity_latest + , subq_11.listing__country_latest + , subq_11.listing__is_lux_latest + , subq_11.listing__capacity_latest + , subq_11.user__revenue_all_time + , subq_11.listings + , subq_11.largest_listing + , subq_11.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.user__revenue_all_time AS user__revenue_all_time - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_10.user__revenue_all_time AS user__revenue_all_time + , subq_4.ds__day AS ds__day + , subq_4.ds__week AS ds__week + , subq_4.ds__month AS ds__month + , subq_4.ds__quarter AS ds__quarter + , subq_4.ds__year AS ds__year + , subq_4.ds__extract_year AS ds__extract_year + , subq_4.ds__extract_quarter AS ds__extract_quarter + , subq_4.ds__extract_month AS ds__extract_month + , subq_4.ds__extract_day AS ds__extract_day + , subq_4.ds__extract_dow AS ds__extract_dow + , subq_4.ds__extract_doy AS ds__extract_doy + , subq_4.created_at__day AS created_at__day + , subq_4.created_at__week AS created_at__week + , subq_4.created_at__month AS created_at__month + , subq_4.created_at__quarter AS created_at__quarter + , subq_4.created_at__year AS created_at__year + , subq_4.created_at__extract_year AS created_at__extract_year + , subq_4.created_at__extract_quarter AS created_at__extract_quarter + , subq_4.created_at__extract_month AS created_at__extract_month + , subq_4.created_at__extract_day AS created_at__extract_day + , subq_4.created_at__extract_dow AS created_at__extract_dow + , subq_4.created_at__extract_doy AS created_at__extract_doy + , subq_4.listing__ds__day AS listing__ds__day + , subq_4.listing__ds__week AS listing__ds__week + , subq_4.listing__ds__month AS listing__ds__month + , subq_4.listing__ds__quarter AS listing__ds__quarter + , subq_4.listing__ds__year AS listing__ds__year + , subq_4.listing__ds__extract_year AS listing__ds__extract_year + , subq_4.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_4.listing__ds__extract_month AS listing__ds__extract_month + , subq_4.listing__ds__extract_day AS listing__ds__extract_day + , subq_4.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_4.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_4.listing__created_at__day AS listing__created_at__day + , subq_4.listing__created_at__week AS listing__created_at__week + , subq_4.listing__created_at__month AS listing__created_at__month + , subq_4.listing__created_at__quarter AS listing__created_at__quarter + , subq_4.listing__created_at__year AS listing__created_at__year + , subq_4.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_4.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_4.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_4.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_4.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_4.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_4.metric_time__day AS metric_time__day + , subq_4.metric_time__week AS metric_time__week + , subq_4.metric_time__month AS metric_time__month + , subq_4.metric_time__quarter AS metric_time__quarter + , subq_4.metric_time__year AS metric_time__year + , subq_4.metric_time__extract_year AS metric_time__extract_year + , subq_4.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_4.metric_time__extract_month AS metric_time__extract_month + , subq_4.metric_time__extract_day AS metric_time__extract_day + , subq_4.metric_time__extract_dow AS metric_time__extract_dow + , subq_4.metric_time__extract_doy AS metric_time__extract_doy + , subq_4.listing AS listing + , subq_4.user AS user + , subq_4.listing__user AS listing__user + , subq_4.country_latest AS country_latest + , subq_4.is_lux_latest AS is_lux_latest + , subq_4.capacity_latest AS capacity_latest + , subq_4.listing__country_latest AS listing__country_latest + , subq_4.listing__is_lux_latest AS listing__is_lux_latest + , subq_4.listing__capacity_latest AS listing__capacity_latest + , subq_4.listings AS listings + , subq_4.largest_listing AS largest_listing + , subq_4.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_3.ds__day + , subq_3.ds__week + , subq_3.ds__month + , subq_3.ds__quarter + , subq_3.ds__year + , subq_3.ds__extract_year + , subq_3.ds__extract_quarter + , subq_3.ds__extract_month + , subq_3.ds__extract_day + , subq_3.ds__extract_dow + , subq_3.ds__extract_doy + , subq_3.created_at__day + , subq_3.created_at__week + , subq_3.created_at__month + , subq_3.created_at__quarter + , subq_3.created_at__year + , subq_3.created_at__extract_year + , subq_3.created_at__extract_quarter + , subq_3.created_at__extract_month + , subq_3.created_at__extract_day + , subq_3.created_at__extract_dow + , subq_3.created_at__extract_doy + , subq_3.listing__ds__day + , subq_3.listing__ds__week + , subq_3.listing__ds__month + , subq_3.listing__ds__quarter + , subq_3.listing__ds__year + , subq_3.listing__ds__extract_year + , subq_3.listing__ds__extract_quarter + , subq_3.listing__ds__extract_month + , subq_3.listing__ds__extract_day + , subq_3.listing__ds__extract_dow + , subq_3.listing__ds__extract_doy + , subq_3.listing__created_at__day + , subq_3.listing__created_at__week + , subq_3.listing__created_at__month + , subq_3.listing__created_at__quarter + , subq_3.listing__created_at__year + , subq_3.listing__created_at__extract_year + , subq_3.listing__created_at__extract_quarter + , subq_3.listing__created_at__extract_month + , subq_3.listing__created_at__extract_day + , subq_3.listing__created_at__extract_dow + , subq_3.listing__created_at__extract_doy + , subq_3.ds__day AS metric_time__day + , subq_3.ds__week AS metric_time__week + , subq_3.ds__month AS metric_time__month + , subq_3.ds__quarter AS metric_time__quarter + , subq_3.ds__year AS metric_time__year + , subq_3.ds__extract_year AS metric_time__extract_year + , subq_3.ds__extract_quarter AS metric_time__extract_quarter + , subq_3.ds__extract_month AS metric_time__extract_month + , subq_3.ds__extract_day AS metric_time__extract_day + , subq_3.ds__extract_dow AS metric_time__extract_dow + , subq_3.ds__extract_doy AS metric_time__extract_doy + , subq_3.listing + , subq_3.user + , subq_3.listing__user + , subq_3.country_latest + , subq_3.is_lux_latest + , subq_3.capacity_latest + , subq_3.listing__country_latest + , subq_3.listing__is_lux_latest + , subq_3.listing__capacity_latest + , subq_3.listings + , subq_3.largest_listing + , subq_3.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,67 +289,67 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_3 + ) subq_4 LEFT OUTER JOIN ( -- Pass Only Elements: ['user', 'user__revenue_all_time'] SELECT - subq_6.user - , subq_6.user__revenue_all_time + subq_9.user + , subq_9.user__revenue_all_time FROM ( -- Compute Metrics via Expressions SELECT - subq_5.user - , subq_5.txn_revenue AS user__revenue_all_time + subq_8.user + , subq_8.txn_revenue AS user__revenue_all_time FROM ( -- Aggregate Measures SELECT - subq_4.user - , SUM(subq_4.txn_revenue) AS txn_revenue + subq_7.user + , SUM(subq_7.txn_revenue) AS txn_revenue FROM ( -- Pass Only Elements: ['txn_revenue', 'user'] SELECT - subq_3.user - , subq_3.txn_revenue + subq_6.user + , subq_6.txn_revenue FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.revenue_instance__ds__day - , subq_2.revenue_instance__ds__week - , subq_2.revenue_instance__ds__month - , subq_2.revenue_instance__ds__quarter - , subq_2.revenue_instance__ds__year - , subq_2.revenue_instance__ds__extract_year - , subq_2.revenue_instance__ds__extract_quarter - , subq_2.revenue_instance__ds__extract_month - , subq_2.revenue_instance__ds__extract_day - , subq_2.revenue_instance__ds__extract_dow - , subq_2.revenue_instance__ds__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.user - , subq_2.revenue_instance__user - , subq_2.txn_revenue + subq_5.ds__day + , subq_5.ds__week + , subq_5.ds__month + , subq_5.ds__quarter + , subq_5.ds__year + , subq_5.ds__extract_year + , subq_5.ds__extract_quarter + , subq_5.ds__extract_month + , subq_5.ds__extract_day + , subq_5.ds__extract_dow + , subq_5.ds__extract_doy + , subq_5.revenue_instance__ds__day + , subq_5.revenue_instance__ds__week + , subq_5.revenue_instance__ds__month + , subq_5.revenue_instance__ds__quarter + , subq_5.revenue_instance__ds__year + , subq_5.revenue_instance__ds__extract_year + , subq_5.revenue_instance__ds__extract_quarter + , subq_5.revenue_instance__ds__extract_month + , subq_5.revenue_instance__ds__extract_day + , subq_5.revenue_instance__ds__extract_dow + , subq_5.revenue_instance__ds__extract_doy + , subq_5.ds__day AS metric_time__day + , subq_5.ds__week AS metric_time__week + , subq_5.ds__month AS metric_time__month + , subq_5.ds__quarter AS metric_time__quarter + , subq_5.ds__year AS metric_time__year + , subq_5.ds__extract_year AS metric_time__extract_year + , subq_5.ds__extract_quarter AS metric_time__extract_quarter + , subq_5.ds__extract_month AS metric_time__extract_month + , subq_5.ds__extract_day AS metric_time__extract_day + , subq_5.ds__extract_dow AS metric_time__extract_dow + , subq_5.ds__extract_doy AS metric_time__extract_doy + , subq_5.user + , subq_5.revenue_instance__user + , subq_5.txn_revenue FROM ( -- Read Elements From Semantic Model 'revenue' SELECT @@ -379,18 +379,18 @@ FROM ( , revenue_src_28000.user_id AS user , revenue_src_28000.user_id AS revenue_instance__user FROM ***************************.fct_revenue revenue_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_5 + ) subq_6 + ) subq_7 GROUP BY - subq_4.user - ) subq_5 - ) subq_6 - ) subq_7 + subq_7.user + ) subq_8 + ) subq_9 + ) subq_10 ON - subq_1.user = subq_7.user - ) subq_8 + subq_4.user = subq_10.user + ) subq_11 WHERE user__revenue_all_time > 1 - ) subq_9 - ) subq_10 -) subq_11 + ) subq_12 + ) subq_13 +) subq_14 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql index e792136fa4..6f0fd4d482 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_cumulative_metric_in_where_filter__plan0_optimized.sql @@ -15,8 +15,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_19.user__revenue_all_time AS user__revenue_all_time - , subq_13.listings AS listings + subq_22.user__revenue_all_time AS user__revenue_all_time + , subq_16.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -24,7 +24,7 @@ FROM ( user_id AS user , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_13 + ) subq_16 LEFT OUTER JOIN ( -- Read Elements From Semantic Model 'revenue' -- Metric Time Dimension 'ds' @@ -38,8 +38,8 @@ FROM ( FROM ***************************.fct_revenue revenue_src_28000 GROUP BY user_id - ) subq_19 + ) subq_22 ON - subq_13.user = subq_19.user -) subq_20 + subq_16.user = subq_22.user +) subq_23 WHERE user__revenue_all_time > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql index 8d294954e3..fd203fad3c 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_27.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_26.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_25.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__views_times_booking_value - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_24.ds__day + , subq_24.ds__week + , subq_24.ds__month + , subq_24.ds__quarter + , subq_24.ds__year + , subq_24.ds__extract_year + , subq_24.ds__extract_quarter + , subq_24.ds__extract_month + , subq_24.ds__extract_day + , subq_24.ds__extract_dow + , subq_24.ds__extract_doy + , subq_24.created_at__day + , subq_24.created_at__week + , subq_24.created_at__month + , subq_24.created_at__quarter + , subq_24.created_at__year + , subq_24.created_at__extract_year + , subq_24.created_at__extract_quarter + , subq_24.created_at__extract_month + , subq_24.created_at__extract_day + , subq_24.created_at__extract_dow + , subq_24.created_at__extract_doy + , subq_24.listing__ds__day + , subq_24.listing__ds__week + , subq_24.listing__ds__month + , subq_24.listing__ds__quarter + , subq_24.listing__ds__year + , subq_24.listing__ds__extract_year + , subq_24.listing__ds__extract_quarter + , subq_24.listing__ds__extract_month + , subq_24.listing__ds__extract_day + , subq_24.listing__ds__extract_dow + , subq_24.listing__ds__extract_doy + , subq_24.listing__created_at__day + , subq_24.listing__created_at__week + , subq_24.listing__created_at__month + , subq_24.listing__created_at__quarter + , subq_24.listing__created_at__year + , subq_24.listing__created_at__extract_year + , subq_24.listing__created_at__extract_quarter + , subq_24.listing__created_at__extract_month + , subq_24.listing__created_at__extract_day + , subq_24.listing__created_at__extract_dow + , subq_24.listing__created_at__extract_doy + , subq_24.metric_time__day + , subq_24.metric_time__week + , subq_24.metric_time__month + , subq_24.metric_time__quarter + , subq_24.metric_time__year + , subq_24.metric_time__extract_year + , subq_24.metric_time__extract_quarter + , subq_24.metric_time__extract_month + , subq_24.metric_time__extract_day + , subq_24.metric_time__extract_dow + , subq_24.metric_time__extract_doy + , subq_24.listing + , subq_24.user + , subq_24.listing__user + , subq_24.country_latest + , subq_24.is_lux_latest + , subq_24.capacity_latest + , subq_24.listing__country_latest + , subq_24.listing__is_lux_latest + , subq_24.listing__capacity_latest + , subq_24.listing__views_times_booking_value + , subq_24.listings + , subq_24.largest_listing + , subq_24.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_23.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] SELECT - subq_13.listing - , subq_13.listing__views_times_booking_value + subq_22.listing + , subq_22.listing__views_times_booking_value FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing + subq_21.listing , booking_value * views AS listing__views_times_booking_value FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.booking_value) AS booking_value - , MAX(subq_11.views) AS views + COALESCE(subq_15.listing, subq_20.listing) AS listing + , MAX(subq_15.booking_value) AS booking_value + , MAX(subq_20.views) AS views FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.booking_value + subq_14.listing + , subq_14.booking_value FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.booking_value) AS booking_value + subq_13.listing + , SUM(subq_13.booking_value) AS booking_value FROM ( -- Pass Only Elements: ['booking_value', 'listing'] SELECT - subq_3.listing - , subq_3.booking_value + subq_12.listing + , subq_12.booking_value FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,91 +513,91 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 + subq_13.listing + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.views + subq_19.listing + , subq_19.views FROM ( -- Aggregate Measures SELECT - subq_9.listing - , SUM(subq_9.views) AS views + subq_18.listing + , SUM(subq_18.views) AS views FROM ( -- Pass Only Elements: ['views', 'listing'] SELECT - subq_8.listing - , subq_8.views + subq_17.listing + , subq_17.views FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.view__ds__day - , subq_7.view__ds__week - , subq_7.view__ds__month - , subq_7.view__ds__quarter - , subq_7.view__ds__year - , subq_7.view__ds__extract_year - , subq_7.view__ds__extract_quarter - , subq_7.view__ds__extract_month - , subq_7.view__ds__extract_day - , subq_7.view__ds__extract_dow - , subq_7.view__ds__extract_doy - , subq_7.view__ds_partitioned__day - , subq_7.view__ds_partitioned__week - , subq_7.view__ds_partitioned__month - , subq_7.view__ds_partitioned__quarter - , subq_7.view__ds_partitioned__year - , subq_7.view__ds_partitioned__extract_year - , subq_7.view__ds_partitioned__extract_quarter - , subq_7.view__ds_partitioned__extract_month - , subq_7.view__ds_partitioned__extract_day - , subq_7.view__ds_partitioned__extract_dow - , subq_7.view__ds_partitioned__extract_doy - , subq_7.ds__day AS metric_time__day - , subq_7.ds__week AS metric_time__week - , subq_7.ds__month AS metric_time__month - , subq_7.ds__quarter AS metric_time__quarter - , subq_7.ds__year AS metric_time__year - , subq_7.ds__extract_year AS metric_time__extract_year - , subq_7.ds__extract_quarter AS metric_time__extract_quarter - , subq_7.ds__extract_month AS metric_time__extract_month - , subq_7.ds__extract_day AS metric_time__extract_day - , subq_7.ds__extract_dow AS metric_time__extract_dow - , subq_7.ds__extract_doy AS metric_time__extract_doy - , subq_7.listing - , subq_7.user - , subq_7.view__listing - , subq_7.view__user - , subq_7.views + subq_16.ds__day + , subq_16.ds__week + , subq_16.ds__month + , subq_16.ds__quarter + , subq_16.ds__year + , subq_16.ds__extract_year + , subq_16.ds__extract_quarter + , subq_16.ds__extract_month + , subq_16.ds__extract_day + , subq_16.ds__extract_dow + , subq_16.ds__extract_doy + , subq_16.ds_partitioned__day + , subq_16.ds_partitioned__week + , subq_16.ds_partitioned__month + , subq_16.ds_partitioned__quarter + , subq_16.ds_partitioned__year + , subq_16.ds_partitioned__extract_year + , subq_16.ds_partitioned__extract_quarter + , subq_16.ds_partitioned__extract_month + , subq_16.ds_partitioned__extract_day + , subq_16.ds_partitioned__extract_dow + , subq_16.ds_partitioned__extract_doy + , subq_16.view__ds__day + , subq_16.view__ds__week + , subq_16.view__ds__month + , subq_16.view__ds__quarter + , subq_16.view__ds__year + , subq_16.view__ds__extract_year + , subq_16.view__ds__extract_quarter + , subq_16.view__ds__extract_month + , subq_16.view__ds__extract_day + , subq_16.view__ds__extract_dow + , subq_16.view__ds__extract_doy + , subq_16.view__ds_partitioned__day + , subq_16.view__ds_partitioned__week + , subq_16.view__ds_partitioned__month + , subq_16.view__ds_partitioned__quarter + , subq_16.view__ds_partitioned__year + , subq_16.view__ds_partitioned__extract_year + , subq_16.view__ds_partitioned__extract_quarter + , subq_16.view__ds_partitioned__extract_month + , subq_16.view__ds_partitioned__extract_day + , subq_16.view__ds_partitioned__extract_dow + , subq_16.view__ds_partitioned__extract_doy + , subq_16.ds__day AS metric_time__day + , subq_16.ds__week AS metric_time__week + , subq_16.ds__month AS metric_time__month + , subq_16.ds__quarter AS metric_time__quarter + , subq_16.ds__year AS metric_time__year + , subq_16.ds__extract_year AS metric_time__extract_year + , subq_16.ds__extract_quarter AS metric_time__extract_quarter + , subq_16.ds__extract_month AS metric_time__extract_month + , subq_16.ds__extract_day AS metric_time__extract_day + , subq_16.ds__extract_dow AS metric_time__extract_dow + , subq_16.ds__extract_doy AS metric_time__extract_doy + , subq_16.listing + , subq_16.user + , subq_16.view__listing + , subq_16.view__user + , subq_16.views FROM ( -- Read Elements From Semantic Model 'views_source' SELECT @@ -651,24 +651,24 @@ FROM ( , views_source_src_28000.listing_id AS view__listing , views_source_src_28000.user_id AS view__user FROM ***************************.fct_views views_source_src_28000 - ) subq_7 - ) subq_8 - ) subq_9 + ) subq_16 + ) subq_17 + ) subq_18 GROUP BY - subq_9.listing - ) subq_10 - ) subq_11 + subq_18.listing + ) subq_19 + ) subq_20 ON - subq_6.listing = subq_11.listing + subq_15.listing = subq_20.listing GROUP BY - COALESCE(subq_6.listing, subq_11.listing) - ) subq_12 - ) subq_13 - ) subq_14 + COALESCE(subq_15.listing, subq_20.listing) + ) subq_21 + ) subq_22 + ) subq_23 ON - subq_1.listing = subq_14.listing - ) subq_15 + subq_10.listing = subq_23.listing + ) subq_24 WHERE listing__views_times_booking_value > 1 - ) subq_16 - ) subq_17 -) subq_18 + ) subq_25 + ) subq_26 +) subq_27 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql index 924ebfbad4..765cc13e42 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_derived_metric_in_where_filter__plan0_optimized.sql @@ -13,8 +13,8 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_33.listing__views_times_booking_value AS listing__views_times_booking_value - , subq_20.listings AS listings + subq_42.listing__views_times_booking_value AS listing__views_times_booking_value + , subq_29.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -22,7 +22,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_20 + ) subq_29 LEFT OUTER JOIN ( -- Compute Metrics via Expressions -- Pass Only Elements: ['listing', 'listing__views_times_booking_value'] @@ -32,9 +32,9 @@ FROM ( FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_25.listing, subq_30.listing) AS listing - , MAX(subq_25.booking_value) AS booking_value - , MAX(subq_30.views) AS views + COALESCE(subq_34.listing, subq_39.listing) AS listing + , MAX(subq_34.booking_value) AS booking_value + , MAX(subq_39.views) AS views FROM ( -- Read Elements From Semantic Model 'bookings_source' -- Metric Time Dimension 'ds' @@ -47,7 +47,7 @@ FROM ( FROM ***************************.fct_bookings bookings_source_src_28000 GROUP BY listing_id - ) subq_25 + ) subq_34 FULL OUTER JOIN ( -- Aggregate Measures -- Compute Metrics via Expressions @@ -62,17 +62,17 @@ FROM ( listing_id AS listing , 1 AS views FROM ***************************.fct_views views_source_src_28000 - ) subq_28 + ) subq_37 GROUP BY listing - ) subq_30 + ) subq_39 ON - subq_25.listing = subq_30.listing + subq_34.listing = subq_39.listing GROUP BY - COALESCE(subq_25.listing, subq_30.listing) - ) subq_31 - ) subq_33 + COALESCE(subq_34.listing, subq_39.listing) + ) subq_40 + ) subq_42 ON - subq_20.listing = subq_33.listing -) subq_34 + subq_29.listing = subq_42.listing +) subq_43 WHERE listing__views_times_booking_value > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql index 41b9cfd468..7387bf3b93 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0.sql @@ -6,229 +6,229 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_17.listings + subq_22.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_16.listings) AS listings + SUM(subq_21.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_15.listings + subq_20.listings FROM ( -- Constrain Output with WHERE SELECT - subq_14.ds__day - , subq_14.ds__week - , subq_14.ds__month - , subq_14.ds__quarter - , subq_14.ds__year - , subq_14.ds__extract_year - , subq_14.ds__extract_quarter - , subq_14.ds__extract_month - , subq_14.ds__extract_day - , subq_14.ds__extract_dow - , subq_14.ds__extract_doy - , subq_14.created_at__day - , subq_14.created_at__week - , subq_14.created_at__month - , subq_14.created_at__quarter - , subq_14.created_at__year - , subq_14.created_at__extract_year - , subq_14.created_at__extract_quarter - , subq_14.created_at__extract_month - , subq_14.created_at__extract_day - , subq_14.created_at__extract_dow - , subq_14.created_at__extract_doy - , subq_14.listing__ds__day - , subq_14.listing__ds__week - , subq_14.listing__ds__month - , subq_14.listing__ds__quarter - , subq_14.listing__ds__year - , subq_14.listing__ds__extract_year - , subq_14.listing__ds__extract_quarter - , subq_14.listing__ds__extract_month - , subq_14.listing__ds__extract_day - , subq_14.listing__ds__extract_dow - , subq_14.listing__ds__extract_doy - , subq_14.listing__created_at__day - , subq_14.listing__created_at__week - , subq_14.listing__created_at__month - , subq_14.listing__created_at__quarter - , subq_14.listing__created_at__year - , subq_14.listing__created_at__extract_year - , subq_14.listing__created_at__extract_quarter - , subq_14.listing__created_at__extract_month - , subq_14.listing__created_at__extract_day - , subq_14.listing__created_at__extract_dow - , subq_14.listing__created_at__extract_doy - , subq_14.metric_time__day - , subq_14.metric_time__week - , subq_14.metric_time__month - , subq_14.metric_time__quarter - , subq_14.metric_time__year - , subq_14.metric_time__extract_year - , subq_14.metric_time__extract_quarter - , subq_14.metric_time__extract_month - , subq_14.metric_time__extract_day - , subq_14.metric_time__extract_dow - , subq_14.metric_time__extract_doy - , subq_14.listing - , subq_14.user - , subq_14.listing__user - , subq_14.country_latest - , subq_14.is_lux_latest - , subq_14.capacity_latest - , subq_14.listing__country_latest - , subq_14.listing__is_lux_latest - , subq_14.listing__capacity_latest - , subq_14.listing__bookings - , subq_14.listing__bookers - , subq_14.listings - , subq_14.largest_listing - , subq_14.smallest_listing + subq_19.ds__day + , subq_19.ds__week + , subq_19.ds__month + , subq_19.ds__quarter + , subq_19.ds__year + , subq_19.ds__extract_year + , subq_19.ds__extract_quarter + , subq_19.ds__extract_month + , subq_19.ds__extract_day + , subq_19.ds__extract_dow + , subq_19.ds__extract_doy + , subq_19.created_at__day + , subq_19.created_at__week + , subq_19.created_at__month + , subq_19.created_at__quarter + , subq_19.created_at__year + , subq_19.created_at__extract_year + , subq_19.created_at__extract_quarter + , subq_19.created_at__extract_month + , subq_19.created_at__extract_day + , subq_19.created_at__extract_dow + , subq_19.created_at__extract_doy + , subq_19.listing__ds__day + , subq_19.listing__ds__week + , subq_19.listing__ds__month + , subq_19.listing__ds__quarter + , subq_19.listing__ds__year + , subq_19.listing__ds__extract_year + , subq_19.listing__ds__extract_quarter + , subq_19.listing__ds__extract_month + , subq_19.listing__ds__extract_day + , subq_19.listing__ds__extract_dow + , subq_19.listing__ds__extract_doy + , subq_19.listing__created_at__day + , subq_19.listing__created_at__week + , subq_19.listing__created_at__month + , subq_19.listing__created_at__quarter + , subq_19.listing__created_at__year + , subq_19.listing__created_at__extract_year + , subq_19.listing__created_at__extract_quarter + , subq_19.listing__created_at__extract_month + , subq_19.listing__created_at__extract_day + , subq_19.listing__created_at__extract_dow + , subq_19.listing__created_at__extract_doy + , subq_19.metric_time__day + , subq_19.metric_time__week + , subq_19.metric_time__month + , subq_19.metric_time__quarter + , subq_19.metric_time__year + , subq_19.metric_time__extract_year + , subq_19.metric_time__extract_quarter + , subq_19.metric_time__extract_month + , subq_19.metric_time__extract_day + , subq_19.metric_time__extract_dow + , subq_19.metric_time__extract_doy + , subq_19.listing + , subq_19.user + , subq_19.listing__user + , subq_19.country_latest + , subq_19.is_lux_latest + , subq_19.capacity_latest + , subq_19.listing__country_latest + , subq_19.listing__is_lux_latest + , subq_19.listing__capacity_latest + , subq_19.listing__bookings + , subq_19.listing__bookers + , subq_19.listings + , subq_19.largest_listing + , subq_19.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_7.listing__bookings AS listing__bookings - , subq_13.listing__bookers AS listing__bookers - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_13.listing__bookings AS listing__bookings + , subq_18.listing__bookers AS listing__bookers + , subq_7.ds__day AS ds__day + , subq_7.ds__week AS ds__week + , subq_7.ds__month AS ds__month + , subq_7.ds__quarter AS ds__quarter + , subq_7.ds__year AS ds__year + , subq_7.ds__extract_year AS ds__extract_year + , subq_7.ds__extract_quarter AS ds__extract_quarter + , subq_7.ds__extract_month AS ds__extract_month + , subq_7.ds__extract_day AS ds__extract_day + , subq_7.ds__extract_dow AS ds__extract_dow + , subq_7.ds__extract_doy AS ds__extract_doy + , subq_7.created_at__day AS created_at__day + , subq_7.created_at__week AS created_at__week + , subq_7.created_at__month AS created_at__month + , subq_7.created_at__quarter AS created_at__quarter + , subq_7.created_at__year AS created_at__year + , subq_7.created_at__extract_year AS created_at__extract_year + , subq_7.created_at__extract_quarter AS created_at__extract_quarter + , subq_7.created_at__extract_month AS created_at__extract_month + , subq_7.created_at__extract_day AS created_at__extract_day + , subq_7.created_at__extract_dow AS created_at__extract_dow + , subq_7.created_at__extract_doy AS created_at__extract_doy + , subq_7.listing__ds__day AS listing__ds__day + , subq_7.listing__ds__week AS listing__ds__week + , subq_7.listing__ds__month AS listing__ds__month + , subq_7.listing__ds__quarter AS listing__ds__quarter + , subq_7.listing__ds__year AS listing__ds__year + , subq_7.listing__ds__extract_year AS listing__ds__extract_year + , subq_7.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_7.listing__ds__extract_month AS listing__ds__extract_month + , subq_7.listing__ds__extract_day AS listing__ds__extract_day + , subq_7.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_7.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_7.listing__created_at__day AS listing__created_at__day + , subq_7.listing__created_at__week AS listing__created_at__week + , subq_7.listing__created_at__month AS listing__created_at__month + , subq_7.listing__created_at__quarter AS listing__created_at__quarter + , subq_7.listing__created_at__year AS listing__created_at__year + , subq_7.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_7.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_7.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_7.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_7.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_7.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_7.metric_time__day AS metric_time__day + , subq_7.metric_time__week AS metric_time__week + , subq_7.metric_time__month AS metric_time__month + , subq_7.metric_time__quarter AS metric_time__quarter + , subq_7.metric_time__year AS metric_time__year + , subq_7.metric_time__extract_year AS metric_time__extract_year + , subq_7.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_7.metric_time__extract_month AS metric_time__extract_month + , subq_7.metric_time__extract_day AS metric_time__extract_day + , subq_7.metric_time__extract_dow AS metric_time__extract_dow + , subq_7.metric_time__extract_doy AS metric_time__extract_doy + , subq_7.listing AS listing + , subq_7.user AS user + , subq_7.listing__user AS listing__user + , subq_7.country_latest AS country_latest + , subq_7.is_lux_latest AS is_lux_latest + , subq_7.capacity_latest AS capacity_latest + , subq_7.listing__country_latest AS listing__country_latest + , subq_7.listing__is_lux_latest AS listing__is_lux_latest + , subq_7.listing__capacity_latest AS listing__capacity_latest + , subq_7.listings AS listings + , subq_7.largest_listing AS largest_listing + , subq_7.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_6.ds__day + , subq_6.ds__week + , subq_6.ds__month + , subq_6.ds__quarter + , subq_6.ds__year + , subq_6.ds__extract_year + , subq_6.ds__extract_quarter + , subq_6.ds__extract_month + , subq_6.ds__extract_day + , subq_6.ds__extract_dow + , subq_6.ds__extract_doy + , subq_6.created_at__day + , subq_6.created_at__week + , subq_6.created_at__month + , subq_6.created_at__quarter + , subq_6.created_at__year + , subq_6.created_at__extract_year + , subq_6.created_at__extract_quarter + , subq_6.created_at__extract_month + , subq_6.created_at__extract_day + , subq_6.created_at__extract_dow + , subq_6.created_at__extract_doy + , subq_6.listing__ds__day + , subq_6.listing__ds__week + , subq_6.listing__ds__month + , subq_6.listing__ds__quarter + , subq_6.listing__ds__year + , subq_6.listing__ds__extract_year + , subq_6.listing__ds__extract_quarter + , subq_6.listing__ds__extract_month + , subq_6.listing__ds__extract_day + , subq_6.listing__ds__extract_dow + , subq_6.listing__ds__extract_doy + , subq_6.listing__created_at__day + , subq_6.listing__created_at__week + , subq_6.listing__created_at__month + , subq_6.listing__created_at__quarter + , subq_6.listing__created_at__year + , subq_6.listing__created_at__extract_year + , subq_6.listing__created_at__extract_quarter + , subq_6.listing__created_at__extract_month + , subq_6.listing__created_at__extract_day + , subq_6.listing__created_at__extract_dow + , subq_6.listing__created_at__extract_doy + , subq_6.ds__day AS metric_time__day + , subq_6.ds__week AS metric_time__week + , subq_6.ds__month AS metric_time__month + , subq_6.ds__quarter AS metric_time__quarter + , subq_6.ds__year AS metric_time__year + , subq_6.ds__extract_year AS metric_time__extract_year + , subq_6.ds__extract_quarter AS metric_time__extract_quarter + , subq_6.ds__extract_month AS metric_time__extract_month + , subq_6.ds__extract_day AS metric_time__extract_day + , subq_6.ds__extract_dow AS metric_time__extract_dow + , subq_6.ds__extract_doy AS metric_time__extract_doy + , subq_6.listing + , subq_6.user + , subq_6.listing__user + , subq_6.country_latest + , subq_6.is_lux_latest + , subq_6.capacity_latest + , subq_6.listing__country_latest + , subq_6.listing__is_lux_latest + , subq_6.listing__capacity_latest + , subq_6.listings + , subq_6.largest_listing + , subq_6.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -289,129 +289,129 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_6 + ) subq_7 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings'] SELECT - subq_6.listing - , subq_6.listing__bookings + subq_12.listing + , subq_12.listing__bookings FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings AS listing__bookings + subq_11.listing + , subq_11.bookings AS listing__bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_10.listing + , SUM(subq_10.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_9.listing + , subq_9.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_8.ds__day + , subq_8.ds__week + , subq_8.ds__month + , subq_8.ds__quarter + , subq_8.ds__year + , subq_8.ds__extract_year + , subq_8.ds__extract_quarter + , subq_8.ds__extract_month + , subq_8.ds__extract_day + , subq_8.ds__extract_dow + , subq_8.ds__extract_doy + , subq_8.ds_partitioned__day + , subq_8.ds_partitioned__week + , subq_8.ds_partitioned__month + , subq_8.ds_partitioned__quarter + , subq_8.ds_partitioned__year + , subq_8.ds_partitioned__extract_year + , subq_8.ds_partitioned__extract_quarter + , subq_8.ds_partitioned__extract_month + , subq_8.ds_partitioned__extract_day + , subq_8.ds_partitioned__extract_dow + , subq_8.ds_partitioned__extract_doy + , subq_8.paid_at__day + , subq_8.paid_at__week + , subq_8.paid_at__month + , subq_8.paid_at__quarter + , subq_8.paid_at__year + , subq_8.paid_at__extract_year + , subq_8.paid_at__extract_quarter + , subq_8.paid_at__extract_month + , subq_8.paid_at__extract_day + , subq_8.paid_at__extract_dow + , subq_8.paid_at__extract_doy + , subq_8.booking__ds__day + , subq_8.booking__ds__week + , subq_8.booking__ds__month + , subq_8.booking__ds__quarter + , subq_8.booking__ds__year + , subq_8.booking__ds__extract_year + , subq_8.booking__ds__extract_quarter + , subq_8.booking__ds__extract_month + , subq_8.booking__ds__extract_day + , subq_8.booking__ds__extract_dow + , subq_8.booking__ds__extract_doy + , subq_8.booking__ds_partitioned__day + , subq_8.booking__ds_partitioned__week + , subq_8.booking__ds_partitioned__month + , subq_8.booking__ds_partitioned__quarter + , subq_8.booking__ds_partitioned__year + , subq_8.booking__ds_partitioned__extract_year + , subq_8.booking__ds_partitioned__extract_quarter + , subq_8.booking__ds_partitioned__extract_month + , subq_8.booking__ds_partitioned__extract_day + , subq_8.booking__ds_partitioned__extract_dow + , subq_8.booking__ds_partitioned__extract_doy + , subq_8.booking__paid_at__day + , subq_8.booking__paid_at__week + , subq_8.booking__paid_at__month + , subq_8.booking__paid_at__quarter + , subq_8.booking__paid_at__year + , subq_8.booking__paid_at__extract_year + , subq_8.booking__paid_at__extract_quarter + , subq_8.booking__paid_at__extract_month + , subq_8.booking__paid_at__extract_day + , subq_8.booking__paid_at__extract_dow + , subq_8.booking__paid_at__extract_doy + , subq_8.ds__day AS metric_time__day + , subq_8.ds__week AS metric_time__week + , subq_8.ds__month AS metric_time__month + , subq_8.ds__quarter AS metric_time__quarter + , subq_8.ds__year AS metric_time__year + , subq_8.ds__extract_year AS metric_time__extract_year + , subq_8.ds__extract_quarter AS metric_time__extract_quarter + , subq_8.ds__extract_month AS metric_time__extract_month + , subq_8.ds__extract_day AS metric_time__extract_day + , subq_8.ds__extract_dow AS metric_time__extract_dow + , subq_8.ds__extract_doy AS metric_time__extract_doy + , subq_8.listing + , subq_8.guest + , subq_8.host + , subq_8.booking__listing + , subq_8.booking__guest + , subq_8.booking__host + , subq_8.is_instant + , subq_8.booking__is_instant + , subq_8.bookings + , subq_8.instant_bookings + , subq_8.booking_value + , subq_8.max_booking_value + , subq_8.min_booking_value + , subq_8.bookers + , subq_8.average_booking_value + , subq_8.referred_bookings + , subq_8.median_booking_value + , subq_8.booking_value_p99 + , subq_8.discrete_booking_value_p99 + , subq_8.approximate_continuous_booking_value_p99 + , subq_8.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -504,36 +504,36 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_8 + ) subq_9 + ) subq_10 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 - ) subq_7 + subq_10.listing + ) subq_11 + ) subq_12 + ) subq_13 ON - subq_1.listing = subq_7.listing + subq_7.listing = subq_13.listing LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookers'] SELECT - subq_12.listing - , subq_12.listing__bookers + subq_17.listing + , subq_17.listing__bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_11.listing - , subq_11.bookers AS listing__bookers + subq_16.listing + , subq_16.bookers AS listing__bookers FROM ( -- Aggregate Measures SELECT - subq_10.listing - , COUNT(DISTINCT subq_10.bookers) AS bookers + subq_15.listing + , COUNT(DISTINCT subq_15.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_9.listing - , subq_9.bookers + subq_14.listing + , subq_14.bookers FROM ( -- Metric Time Dimension 'ds' SELECT @@ -728,17 +728,17 @@ FROM ( , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 ) subq_8 - ) subq_9 - ) subq_10 + ) subq_14 + ) subq_15 GROUP BY - subq_10.listing - ) subq_11 - ) subq_12 - ) subq_13 + subq_15.listing + ) subq_16 + ) subq_17 + ) subq_18 ON - subq_1.listing = subq_13.listing - ) subq_14 + subq_7.listing = subq_18.listing + ) subq_19 WHERE listing__bookings > 2 AND listing__bookers > 1 - ) subq_15 - ) subq_16 -) subq_17 + ) subq_20 + ) subq_21 +) subq_22 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql index 823988cd11..9fc3132671 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_multiple_metrics_in_filter__plan0_optimized.sql @@ -23,9 +23,9 @@ SELECT FROM ( -- Join Standard Outputs SELECT - subq_25.listing__bookings AS listing__bookings - , subq_30.listing__bookers AS listing__bookers - , subq_19.listings AS listings + subq_30.listing__bookings AS listing__bookings + , subq_35.listing__bookers AS listing__bookers + , subq_24.listings AS listings FROM ( -- Read Elements From Semantic Model 'listings_latest' -- Metric Time Dimension 'ds' @@ -33,7 +33,7 @@ FROM ( listing_id AS listing , 1 AS listings FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_19 + ) subq_24 LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookings', 'listing'] @@ -46,9 +46,9 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_25 + ) subq_30 ON - subq_19.listing = subq_25.listing + subq_24.listing = subq_30.listing LEFT OUTER JOIN ( -- Read From CTE For node_id=sma_28009 -- Pass Only Elements: ['bookers', 'listing'] @@ -61,8 +61,8 @@ FROM ( FROM sma_28009_cte sma_28009_cte GROUP BY listing - ) subq_30 + ) subq_35 ON - subq_19.listing = subq_30.listing -) subq_31 + subq_24.listing = subq_35.listing +) subq_36 WHERE listing__bookings > 2 AND listing__bookers > 1 diff --git a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql index aebfd5d1a4..47cb911f09 100644 --- a/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql +++ b/tests_metricflow/snapshots/test_metric_filter_rendering.py/SqlPlan/Databricks/test_query_with_ratio_metric_in_where_filter__plan0.sql @@ -6,227 +6,227 @@ sql_engine: Databricks --- -- Compute Metrics via Expressions SELECT - subq_18.listings + subq_26.listings FROM ( -- Aggregate Measures SELECT - SUM(subq_17.listings) AS listings + SUM(subq_25.listings) AS listings FROM ( -- Pass Only Elements: ['listings',] SELECT - subq_16.listings + subq_24.listings FROM ( -- Constrain Output with WHERE SELECT - subq_15.ds__day - , subq_15.ds__week - , subq_15.ds__month - , subq_15.ds__quarter - , subq_15.ds__year - , subq_15.ds__extract_year - , subq_15.ds__extract_quarter - , subq_15.ds__extract_month - , subq_15.ds__extract_day - , subq_15.ds__extract_dow - , subq_15.ds__extract_doy - , subq_15.created_at__day - , subq_15.created_at__week - , subq_15.created_at__month - , subq_15.created_at__quarter - , subq_15.created_at__year - , subq_15.created_at__extract_year - , subq_15.created_at__extract_quarter - , subq_15.created_at__extract_month - , subq_15.created_at__extract_day - , subq_15.created_at__extract_dow - , subq_15.created_at__extract_doy - , subq_15.listing__ds__day - , subq_15.listing__ds__week - , subq_15.listing__ds__month - , subq_15.listing__ds__quarter - , subq_15.listing__ds__year - , subq_15.listing__ds__extract_year - , subq_15.listing__ds__extract_quarter - , subq_15.listing__ds__extract_month - , subq_15.listing__ds__extract_day - , subq_15.listing__ds__extract_dow - , subq_15.listing__ds__extract_doy - , subq_15.listing__created_at__day - , subq_15.listing__created_at__week - , subq_15.listing__created_at__month - , subq_15.listing__created_at__quarter - , subq_15.listing__created_at__year - , subq_15.listing__created_at__extract_year - , subq_15.listing__created_at__extract_quarter - , subq_15.listing__created_at__extract_month - , subq_15.listing__created_at__extract_day - , subq_15.listing__created_at__extract_dow - , subq_15.listing__created_at__extract_doy - , subq_15.metric_time__day - , subq_15.metric_time__week - , subq_15.metric_time__month - , subq_15.metric_time__quarter - , subq_15.metric_time__year - , subq_15.metric_time__extract_year - , subq_15.metric_time__extract_quarter - , subq_15.metric_time__extract_month - , subq_15.metric_time__extract_day - , subq_15.metric_time__extract_dow - , subq_15.metric_time__extract_doy - , subq_15.listing - , subq_15.user - , subq_15.listing__user - , subq_15.country_latest - , subq_15.is_lux_latest - , subq_15.capacity_latest - , subq_15.listing__country_latest - , subq_15.listing__is_lux_latest - , subq_15.listing__capacity_latest - , subq_15.listing__bookings_per_booker - , subq_15.listings - , subq_15.largest_listing - , subq_15.smallest_listing + subq_23.ds__day + , subq_23.ds__week + , subq_23.ds__month + , subq_23.ds__quarter + , subq_23.ds__year + , subq_23.ds__extract_year + , subq_23.ds__extract_quarter + , subq_23.ds__extract_month + , subq_23.ds__extract_day + , subq_23.ds__extract_dow + , subq_23.ds__extract_doy + , subq_23.created_at__day + , subq_23.created_at__week + , subq_23.created_at__month + , subq_23.created_at__quarter + , subq_23.created_at__year + , subq_23.created_at__extract_year + , subq_23.created_at__extract_quarter + , subq_23.created_at__extract_month + , subq_23.created_at__extract_day + , subq_23.created_at__extract_dow + , subq_23.created_at__extract_doy + , subq_23.listing__ds__day + , subq_23.listing__ds__week + , subq_23.listing__ds__month + , subq_23.listing__ds__quarter + , subq_23.listing__ds__year + , subq_23.listing__ds__extract_year + , subq_23.listing__ds__extract_quarter + , subq_23.listing__ds__extract_month + , subq_23.listing__ds__extract_day + , subq_23.listing__ds__extract_dow + , subq_23.listing__ds__extract_doy + , subq_23.listing__created_at__day + , subq_23.listing__created_at__week + , subq_23.listing__created_at__month + , subq_23.listing__created_at__quarter + , subq_23.listing__created_at__year + , subq_23.listing__created_at__extract_year + , subq_23.listing__created_at__extract_quarter + , subq_23.listing__created_at__extract_month + , subq_23.listing__created_at__extract_day + , subq_23.listing__created_at__extract_dow + , subq_23.listing__created_at__extract_doy + , subq_23.metric_time__day + , subq_23.metric_time__week + , subq_23.metric_time__month + , subq_23.metric_time__quarter + , subq_23.metric_time__year + , subq_23.metric_time__extract_year + , subq_23.metric_time__extract_quarter + , subq_23.metric_time__extract_month + , subq_23.metric_time__extract_day + , subq_23.metric_time__extract_dow + , subq_23.metric_time__extract_doy + , subq_23.listing + , subq_23.user + , subq_23.listing__user + , subq_23.country_latest + , subq_23.is_lux_latest + , subq_23.capacity_latest + , subq_23.listing__country_latest + , subq_23.listing__is_lux_latest + , subq_23.listing__capacity_latest + , subq_23.listing__bookings_per_booker + , subq_23.listings + , subq_23.largest_listing + , subq_23.smallest_listing FROM ( -- Join Standard Outputs SELECT - subq_14.listing__bookings_per_booker AS listing__bookings_per_booker - , subq_1.ds__day AS ds__day - , subq_1.ds__week AS ds__week - , subq_1.ds__month AS ds__month - , subq_1.ds__quarter AS ds__quarter - , subq_1.ds__year AS ds__year - , subq_1.ds__extract_year AS ds__extract_year - , subq_1.ds__extract_quarter AS ds__extract_quarter - , subq_1.ds__extract_month AS ds__extract_month - , subq_1.ds__extract_day AS ds__extract_day - , subq_1.ds__extract_dow AS ds__extract_dow - , subq_1.ds__extract_doy AS ds__extract_doy - , subq_1.created_at__day AS created_at__day - , subq_1.created_at__week AS created_at__week - , subq_1.created_at__month AS created_at__month - , subq_1.created_at__quarter AS created_at__quarter - , subq_1.created_at__year AS created_at__year - , subq_1.created_at__extract_year AS created_at__extract_year - , subq_1.created_at__extract_quarter AS created_at__extract_quarter - , subq_1.created_at__extract_month AS created_at__extract_month - , subq_1.created_at__extract_day AS created_at__extract_day - , subq_1.created_at__extract_dow AS created_at__extract_dow - , subq_1.created_at__extract_doy AS created_at__extract_doy - , subq_1.listing__ds__day AS listing__ds__day - , subq_1.listing__ds__week AS listing__ds__week - , subq_1.listing__ds__month AS listing__ds__month - , subq_1.listing__ds__quarter AS listing__ds__quarter - , subq_1.listing__ds__year AS listing__ds__year - , subq_1.listing__ds__extract_year AS listing__ds__extract_year - , subq_1.listing__ds__extract_quarter AS listing__ds__extract_quarter - , subq_1.listing__ds__extract_month AS listing__ds__extract_month - , subq_1.listing__ds__extract_day AS listing__ds__extract_day - , subq_1.listing__ds__extract_dow AS listing__ds__extract_dow - , subq_1.listing__ds__extract_doy AS listing__ds__extract_doy - , subq_1.listing__created_at__day AS listing__created_at__day - , subq_1.listing__created_at__week AS listing__created_at__week - , subq_1.listing__created_at__month AS listing__created_at__month - , subq_1.listing__created_at__quarter AS listing__created_at__quarter - , subq_1.listing__created_at__year AS listing__created_at__year - , subq_1.listing__created_at__extract_year AS listing__created_at__extract_year - , subq_1.listing__created_at__extract_quarter AS listing__created_at__extract_quarter - , subq_1.listing__created_at__extract_month AS listing__created_at__extract_month - , subq_1.listing__created_at__extract_day AS listing__created_at__extract_day - , subq_1.listing__created_at__extract_dow AS listing__created_at__extract_dow - , subq_1.listing__created_at__extract_doy AS listing__created_at__extract_doy - , subq_1.metric_time__day AS metric_time__day - , subq_1.metric_time__week AS metric_time__week - , subq_1.metric_time__month AS metric_time__month - , subq_1.metric_time__quarter AS metric_time__quarter - , subq_1.metric_time__year AS metric_time__year - , subq_1.metric_time__extract_year AS metric_time__extract_year - , subq_1.metric_time__extract_quarter AS metric_time__extract_quarter - , subq_1.metric_time__extract_month AS metric_time__extract_month - , subq_1.metric_time__extract_day AS metric_time__extract_day - , subq_1.metric_time__extract_dow AS metric_time__extract_dow - , subq_1.metric_time__extract_doy AS metric_time__extract_doy - , subq_1.listing AS listing - , subq_1.user AS user - , subq_1.listing__user AS listing__user - , subq_1.country_latest AS country_latest - , subq_1.is_lux_latest AS is_lux_latest - , subq_1.capacity_latest AS capacity_latest - , subq_1.listing__country_latest AS listing__country_latest - , subq_1.listing__is_lux_latest AS listing__is_lux_latest - , subq_1.listing__capacity_latest AS listing__capacity_latest - , subq_1.listings AS listings - , subq_1.largest_listing AS largest_listing - , subq_1.smallest_listing AS smallest_listing + subq_22.listing__bookings_per_booker AS listing__bookings_per_booker + , subq_10.ds__day AS ds__day + , subq_10.ds__week AS ds__week + , subq_10.ds__month AS ds__month + , subq_10.ds__quarter AS ds__quarter + , subq_10.ds__year AS ds__year + , subq_10.ds__extract_year AS ds__extract_year + , subq_10.ds__extract_quarter AS ds__extract_quarter + , subq_10.ds__extract_month AS ds__extract_month + , subq_10.ds__extract_day AS ds__extract_day + , subq_10.ds__extract_dow AS ds__extract_dow + , subq_10.ds__extract_doy AS ds__extract_doy + , subq_10.created_at__day AS created_at__day + , subq_10.created_at__week AS created_at__week + , subq_10.created_at__month AS created_at__month + , subq_10.created_at__quarter AS created_at__quarter + , subq_10.created_at__year AS created_at__year + , subq_10.created_at__extract_year AS created_at__extract_year + , subq_10.created_at__extract_quarter AS created_at__extract_quarter + , subq_10.created_at__extract_month AS created_at__extract_month + , subq_10.created_at__extract_day AS created_at__extract_day + , subq_10.created_at__extract_dow AS created_at__extract_dow + , subq_10.created_at__extract_doy AS created_at__extract_doy + , subq_10.listing__ds__day AS listing__ds__day + , subq_10.listing__ds__week AS listing__ds__week + , subq_10.listing__ds__month AS listing__ds__month + , subq_10.listing__ds__quarter AS listing__ds__quarter + , subq_10.listing__ds__year AS listing__ds__year + , subq_10.listing__ds__extract_year AS listing__ds__extract_year + , subq_10.listing__ds__extract_quarter AS listing__ds__extract_quarter + , subq_10.listing__ds__extract_month AS listing__ds__extract_month + , subq_10.listing__ds__extract_day AS listing__ds__extract_day + , subq_10.listing__ds__extract_dow AS listing__ds__extract_dow + , subq_10.listing__ds__extract_doy AS listing__ds__extract_doy + , subq_10.listing__created_at__day AS listing__created_at__day + , subq_10.listing__created_at__week AS listing__created_at__week + , subq_10.listing__created_at__month AS listing__created_at__month + , subq_10.listing__created_at__quarter AS listing__created_at__quarter + , subq_10.listing__created_at__year AS listing__created_at__year + , subq_10.listing__created_at__extract_year AS listing__created_at__extract_year + , subq_10.listing__created_at__extract_quarter AS listing__created_at__extract_quarter + , subq_10.listing__created_at__extract_month AS listing__created_at__extract_month + , subq_10.listing__created_at__extract_day AS listing__created_at__extract_day + , subq_10.listing__created_at__extract_dow AS listing__created_at__extract_dow + , subq_10.listing__created_at__extract_doy AS listing__created_at__extract_doy + , subq_10.metric_time__day AS metric_time__day + , subq_10.metric_time__week AS metric_time__week + , subq_10.metric_time__month AS metric_time__month + , subq_10.metric_time__quarter AS metric_time__quarter + , subq_10.metric_time__year AS metric_time__year + , subq_10.metric_time__extract_year AS metric_time__extract_year + , subq_10.metric_time__extract_quarter AS metric_time__extract_quarter + , subq_10.metric_time__extract_month AS metric_time__extract_month + , subq_10.metric_time__extract_day AS metric_time__extract_day + , subq_10.metric_time__extract_dow AS metric_time__extract_dow + , subq_10.metric_time__extract_doy AS metric_time__extract_doy + , subq_10.listing AS listing + , subq_10.user AS user + , subq_10.listing__user AS listing__user + , subq_10.country_latest AS country_latest + , subq_10.is_lux_latest AS is_lux_latest + , subq_10.capacity_latest AS capacity_latest + , subq_10.listing__country_latest AS listing__country_latest + , subq_10.listing__is_lux_latest AS listing__is_lux_latest + , subq_10.listing__capacity_latest AS listing__capacity_latest + , subq_10.listings AS listings + , subq_10.largest_listing AS largest_listing + , subq_10.smallest_listing AS smallest_listing FROM ( -- Metric Time Dimension 'ds' SELECT - subq_0.ds__day - , subq_0.ds__week - , subq_0.ds__month - , subq_0.ds__quarter - , subq_0.ds__year - , subq_0.ds__extract_year - , subq_0.ds__extract_quarter - , subq_0.ds__extract_month - , subq_0.ds__extract_day - , subq_0.ds__extract_dow - , subq_0.ds__extract_doy - , subq_0.created_at__day - , subq_0.created_at__week - , subq_0.created_at__month - , subq_0.created_at__quarter - , subq_0.created_at__year - , subq_0.created_at__extract_year - , subq_0.created_at__extract_quarter - , subq_0.created_at__extract_month - , subq_0.created_at__extract_day - , subq_0.created_at__extract_dow - , subq_0.created_at__extract_doy - , subq_0.listing__ds__day - , subq_0.listing__ds__week - , subq_0.listing__ds__month - , subq_0.listing__ds__quarter - , subq_0.listing__ds__year - , subq_0.listing__ds__extract_year - , subq_0.listing__ds__extract_quarter - , subq_0.listing__ds__extract_month - , subq_0.listing__ds__extract_day - , subq_0.listing__ds__extract_dow - , subq_0.listing__ds__extract_doy - , subq_0.listing__created_at__day - , subq_0.listing__created_at__week - , subq_0.listing__created_at__month - , subq_0.listing__created_at__quarter - , subq_0.listing__created_at__year - , subq_0.listing__created_at__extract_year - , subq_0.listing__created_at__extract_quarter - , subq_0.listing__created_at__extract_month - , subq_0.listing__created_at__extract_day - , subq_0.listing__created_at__extract_dow - , subq_0.listing__created_at__extract_doy - , subq_0.ds__day AS metric_time__day - , subq_0.ds__week AS metric_time__week - , subq_0.ds__month AS metric_time__month - , subq_0.ds__quarter AS metric_time__quarter - , subq_0.ds__year AS metric_time__year - , subq_0.ds__extract_year AS metric_time__extract_year - , subq_0.ds__extract_quarter AS metric_time__extract_quarter - , subq_0.ds__extract_month AS metric_time__extract_month - , subq_0.ds__extract_day AS metric_time__extract_day - , subq_0.ds__extract_dow AS metric_time__extract_dow - , subq_0.ds__extract_doy AS metric_time__extract_doy - , subq_0.listing - , subq_0.user - , subq_0.listing__user - , subq_0.country_latest - , subq_0.is_lux_latest - , subq_0.capacity_latest - , subq_0.listing__country_latest - , subq_0.listing__is_lux_latest - , subq_0.listing__capacity_latest - , subq_0.listings - , subq_0.largest_listing - , subq_0.smallest_listing + subq_9.ds__day + , subq_9.ds__week + , subq_9.ds__month + , subq_9.ds__quarter + , subq_9.ds__year + , subq_9.ds__extract_year + , subq_9.ds__extract_quarter + , subq_9.ds__extract_month + , subq_9.ds__extract_day + , subq_9.ds__extract_dow + , subq_9.ds__extract_doy + , subq_9.created_at__day + , subq_9.created_at__week + , subq_9.created_at__month + , subq_9.created_at__quarter + , subq_9.created_at__year + , subq_9.created_at__extract_year + , subq_9.created_at__extract_quarter + , subq_9.created_at__extract_month + , subq_9.created_at__extract_day + , subq_9.created_at__extract_dow + , subq_9.created_at__extract_doy + , subq_9.listing__ds__day + , subq_9.listing__ds__week + , subq_9.listing__ds__month + , subq_9.listing__ds__quarter + , subq_9.listing__ds__year + , subq_9.listing__ds__extract_year + , subq_9.listing__ds__extract_quarter + , subq_9.listing__ds__extract_month + , subq_9.listing__ds__extract_day + , subq_9.listing__ds__extract_dow + , subq_9.listing__ds__extract_doy + , subq_9.listing__created_at__day + , subq_9.listing__created_at__week + , subq_9.listing__created_at__month + , subq_9.listing__created_at__quarter + , subq_9.listing__created_at__year + , subq_9.listing__created_at__extract_year + , subq_9.listing__created_at__extract_quarter + , subq_9.listing__created_at__extract_month + , subq_9.listing__created_at__extract_day + , subq_9.listing__created_at__extract_dow + , subq_9.listing__created_at__extract_doy + , subq_9.ds__day AS metric_time__day + , subq_9.ds__week AS metric_time__week + , subq_9.ds__month AS metric_time__month + , subq_9.ds__quarter AS metric_time__quarter + , subq_9.ds__year AS metric_time__year + , subq_9.ds__extract_year AS metric_time__extract_year + , subq_9.ds__extract_quarter AS metric_time__extract_quarter + , subq_9.ds__extract_month AS metric_time__extract_month + , subq_9.ds__extract_day AS metric_time__extract_day + , subq_9.ds__extract_dow AS metric_time__extract_dow + , subq_9.ds__extract_doy AS metric_time__extract_doy + , subq_9.listing + , subq_9.user + , subq_9.listing__user + , subq_9.country_latest + , subq_9.is_lux_latest + , subq_9.capacity_latest + , subq_9.listing__country_latest + , subq_9.listing__is_lux_latest + , subq_9.listing__capacity_latest + , subq_9.listings + , subq_9.largest_listing + , subq_9.smallest_listing FROM ( -- Read Elements From Semantic Model 'listings_latest' SELECT @@ -287,140 +287,140 @@ FROM ( , listings_latest_src_28000.user_id AS user , listings_latest_src_28000.user_id AS listing__user FROM ***************************.dim_listings_latest listings_latest_src_28000 - ) subq_0 - ) subq_1 + ) subq_9 + ) subq_10 LEFT OUTER JOIN ( -- Pass Only Elements: ['listing', 'listing__bookings_per_booker'] SELECT - subq_13.listing - , subq_13.listing__bookings_per_booker + subq_21.listing + , subq_21.listing__bookings_per_booker FROM ( -- Compute Metrics via Expressions SELECT - subq_12.listing - , CAST(subq_12.bookings AS DOUBLE) / CAST(NULLIF(subq_12.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker + subq_20.listing + , CAST(subq_20.bookings AS DOUBLE) / CAST(NULLIF(subq_20.bookers, 0) AS DOUBLE) AS listing__bookings_per_booker FROM ( -- Combine Aggregated Outputs SELECT - COALESCE(subq_6.listing, subq_11.listing) AS listing - , MAX(subq_6.bookings) AS bookings - , MAX(subq_11.bookers) AS bookers + COALESCE(subq_15.listing, subq_19.listing) AS listing + , MAX(subq_15.bookings) AS bookings + , MAX(subq_19.bookers) AS bookers FROM ( -- Compute Metrics via Expressions SELECT - subq_5.listing - , subq_5.bookings + subq_14.listing + , subq_14.bookings FROM ( -- Aggregate Measures SELECT - subq_4.listing - , SUM(subq_4.bookings) AS bookings + subq_13.listing + , SUM(subq_13.bookings) AS bookings FROM ( -- Pass Only Elements: ['bookings', 'listing'] SELECT - subq_3.listing - , subq_3.bookings + subq_12.listing + , subq_12.bookings FROM ( -- Metric Time Dimension 'ds' SELECT - subq_2.ds__day - , subq_2.ds__week - , subq_2.ds__month - , subq_2.ds__quarter - , subq_2.ds__year - , subq_2.ds__extract_year - , subq_2.ds__extract_quarter - , subq_2.ds__extract_month - , subq_2.ds__extract_day - , subq_2.ds__extract_dow - , subq_2.ds__extract_doy - , subq_2.ds_partitioned__day - , subq_2.ds_partitioned__week - , subq_2.ds_partitioned__month - , subq_2.ds_partitioned__quarter - , subq_2.ds_partitioned__year - , subq_2.ds_partitioned__extract_year - , subq_2.ds_partitioned__extract_quarter - , subq_2.ds_partitioned__extract_month - , subq_2.ds_partitioned__extract_day - , subq_2.ds_partitioned__extract_dow - , subq_2.ds_partitioned__extract_doy - , subq_2.paid_at__day - , subq_2.paid_at__week - , subq_2.paid_at__month - , subq_2.paid_at__quarter - , subq_2.paid_at__year - , subq_2.paid_at__extract_year - , subq_2.paid_at__extract_quarter - , subq_2.paid_at__extract_month - , subq_2.paid_at__extract_day - , subq_2.paid_at__extract_dow - , subq_2.paid_at__extract_doy - , subq_2.booking__ds__day - , subq_2.booking__ds__week - , subq_2.booking__ds__month - , subq_2.booking__ds__quarter - , subq_2.booking__ds__year - , subq_2.booking__ds__extract_year - , subq_2.booking__ds__extract_quarter - , subq_2.booking__ds__extract_month - , subq_2.booking__ds__extract_day - , subq_2.booking__ds__extract_dow - , subq_2.booking__ds__extract_doy - , subq_2.booking__ds_partitioned__day - , subq_2.booking__ds_partitioned__week - , subq_2.booking__ds_partitioned__month - , subq_2.booking__ds_partitioned__quarter - , subq_2.booking__ds_partitioned__year - , subq_2.booking__ds_partitioned__extract_year - , subq_2.booking__ds_partitioned__extract_quarter - , subq_2.booking__ds_partitioned__extract_month - , subq_2.booking__ds_partitioned__extract_day - , subq_2.booking__ds_partitioned__extract_dow - , subq_2.booking__ds_partitioned__extract_doy - , subq_2.booking__paid_at__day - , subq_2.booking__paid_at__week - , subq_2.booking__paid_at__month - , subq_2.booking__paid_at__quarter - , subq_2.booking__paid_at__year - , subq_2.booking__paid_at__extract_year - , subq_2.booking__paid_at__extract_quarter - , subq_2.booking__paid_at__extract_month - , subq_2.booking__paid_at__extract_day - , subq_2.booking__paid_at__extract_dow - , subq_2.booking__paid_at__extract_doy - , subq_2.ds__day AS metric_time__day - , subq_2.ds__week AS metric_time__week - , subq_2.ds__month AS metric_time__month - , subq_2.ds__quarter AS metric_time__quarter - , subq_2.ds__year AS metric_time__year - , subq_2.ds__extract_year AS metric_time__extract_year - , subq_2.ds__extract_quarter AS metric_time__extract_quarter - , subq_2.ds__extract_month AS metric_time__extract_month - , subq_2.ds__extract_day AS metric_time__extract_day - , subq_2.ds__extract_dow AS metric_time__extract_dow - , subq_2.ds__extract_doy AS metric_time__extract_doy - , subq_2.listing - , subq_2.guest - , subq_2.host - , subq_2.booking__listing - , subq_2.booking__guest - , subq_2.booking__host - , subq_2.is_instant - , subq_2.booking__is_instant - , subq_2.bookings - , subq_2.instant_bookings - , subq_2.booking_value - , subq_2.max_booking_value - , subq_2.min_booking_value - , subq_2.bookers - , subq_2.average_booking_value - , subq_2.referred_bookings - , subq_2.median_booking_value - , subq_2.booking_value_p99 - , subq_2.discrete_booking_value_p99 - , subq_2.approximate_continuous_booking_value_p99 - , subq_2.approximate_discrete_booking_value_p99 + subq_11.ds__day + , subq_11.ds__week + , subq_11.ds__month + , subq_11.ds__quarter + , subq_11.ds__year + , subq_11.ds__extract_year + , subq_11.ds__extract_quarter + , subq_11.ds__extract_month + , subq_11.ds__extract_day + , subq_11.ds__extract_dow + , subq_11.ds__extract_doy + , subq_11.ds_partitioned__day + , subq_11.ds_partitioned__week + , subq_11.ds_partitioned__month + , subq_11.ds_partitioned__quarter + , subq_11.ds_partitioned__year + , subq_11.ds_partitioned__extract_year + , subq_11.ds_partitioned__extract_quarter + , subq_11.ds_partitioned__extract_month + , subq_11.ds_partitioned__extract_day + , subq_11.ds_partitioned__extract_dow + , subq_11.ds_partitioned__extract_doy + , subq_11.paid_at__day + , subq_11.paid_at__week + , subq_11.paid_at__month + , subq_11.paid_at__quarter + , subq_11.paid_at__year + , subq_11.paid_at__extract_year + , subq_11.paid_at__extract_quarter + , subq_11.paid_at__extract_month + , subq_11.paid_at__extract_day + , subq_11.paid_at__extract_dow + , subq_11.paid_at__extract_doy + , subq_11.booking__ds__day + , subq_11.booking__ds__week + , subq_11.booking__ds__month + , subq_11.booking__ds__quarter + , subq_11.booking__ds__year + , subq_11.booking__ds__extract_year + , subq_11.booking__ds__extract_quarter + , subq_11.booking__ds__extract_month + , subq_11.booking__ds__extract_day + , subq_11.booking__ds__extract_dow + , subq_11.booking__ds__extract_doy + , subq_11.booking__ds_partitioned__day + , subq_11.booking__ds_partitioned__week + , subq_11.booking__ds_partitioned__month + , subq_11.booking__ds_partitioned__quarter + , subq_11.booking__ds_partitioned__year + , subq_11.booking__ds_partitioned__extract_year + , subq_11.booking__ds_partitioned__extract_quarter + , subq_11.booking__ds_partitioned__extract_month + , subq_11.booking__ds_partitioned__extract_day + , subq_11.booking__ds_partitioned__extract_dow + , subq_11.booking__ds_partitioned__extract_doy + , subq_11.booking__paid_at__day + , subq_11.booking__paid_at__week + , subq_11.booking__paid_at__month + , subq_11.booking__paid_at__quarter + , subq_11.booking__paid_at__year + , subq_11.booking__paid_at__extract_year + , subq_11.booking__paid_at__extract_quarter + , subq_11.booking__paid_at__extract_month + , subq_11.booking__paid_at__extract_day + , subq_11.booking__paid_at__extract_dow + , subq_11.booking__paid_at__extract_doy + , subq_11.ds__day AS metric_time__day + , subq_11.ds__week AS metric_time__week + , subq_11.ds__month AS metric_time__month + , subq_11.ds__quarter AS metric_time__quarter + , subq_11.ds__year AS metric_time__year + , subq_11.ds__extract_year AS metric_time__extract_year + , subq_11.ds__extract_quarter AS metric_time__extract_quarter + , subq_11.ds__extract_month AS metric_time__extract_month + , subq_11.ds__extract_day AS metric_time__extract_day + , subq_11.ds__extract_dow AS metric_time__extract_dow + , subq_11.ds__extract_doy AS metric_time__extract_doy + , subq_11.listing + , subq_11.guest + , subq_11.host + , subq_11.booking__listing + , subq_11.booking__guest + , subq_11.booking__host + , subq_11.is_instant + , subq_11.booking__is_instant + , subq_11.bookings + , subq_11.instant_bookings + , subq_11.booking_value + , subq_11.max_booking_value + , subq_11.min_booking_value + , subq_11.bookers + , subq_11.average_booking_value + , subq_11.referred_bookings + , subq_11.median_booking_value + , subq_11.booking_value_p99 + , subq_11.discrete_booking_value_p99 + , subq_11.approximate_continuous_booking_value_p99 + , subq_11.approximate_discrete_booking_value_p99 FROM ( -- Read Elements From Semantic Model 'bookings_source' SELECT @@ -513,129 +513,129 @@ FROM ( , bookings_source_src_28000.guest_id AS booking__guest , bookings_source_src_28000.host_id AS booking__host FROM ***************************.fct_bookings bookings_source_src_28000 - ) subq_2 - ) subq_3 - ) subq_4 + ) subq_11 + ) subq_12 + ) subq_13 GROUP BY - subq_4.listing - ) subq_5 - ) subq_6 + subq_13.listing + ) subq_14 + ) subq_15 FULL OUTER JOIN ( -- Compute Metrics via Expressions SELECT - subq_10.listing - , subq_10.bookers + subq_18.listing + , subq_18.bookers FROM ( -- Aggregate Measures SELECT - subq_9.listing - , COUNT(DISTINCT subq_9.bookers) AS bookers + subq_17.listing + , COUNT(DISTINCT subq_17.bookers) AS bookers FROM ( -- Pass Only Elements: ['bookers', 'listing'] SELECT - subq_8.listing - , subq_8.bookers + subq_16.listing + , subq_16.bookers FROM ( -- Metric Time Dimension 'ds' SELECT - subq_7.ds__day - , subq_7.ds__week - , subq_7.ds__month - , subq_7.ds__quarter - , subq_7.ds__year - , subq_7.ds__extract_year - , subq_7.ds__extract_quarter - , subq_7.ds__extract_month - , subq_7.ds__extract_day - , subq_7.ds__extract_dow - , subq_7.ds__extract_doy - , subq_7.ds_partitioned__day - , subq_7.ds_partitioned__week - , subq_7.ds_partitioned__month - , subq_7.ds_partitioned__quarter - , subq_7.ds_partitioned__year - , subq_7.ds_partitioned__extract_year - , subq_7.ds_partitioned__extract_quarter - , subq_7.ds_partitioned__extract_month - , subq_7.ds_partitioned__extract_day - , subq_7.ds_partitioned__extract_dow - , subq_7.ds_partitioned__extract_doy - , subq_7.paid_at__day - , subq_7.paid_at__week - , subq_7.paid_at__month - , subq_7.paid_at__quarter - , subq_7.paid_at__year - , subq_7.paid_at__extract_year - , subq_7.paid_at__extract_quarter - , subq_7.paid_at__extract_month - , subq_7.paid_at__extract_day - , subq_7.paid_at__extract_dow - , subq_7.paid_at__extract_doy - , subq_7.booking__ds__day - , subq_7.booking__ds__week - , subq_7.booking__ds__month - , subq_7.booking__ds__quarter - , subq_7.booking__ds__year - , subq_7.booking__ds__extract_year - , subq_7.booking__ds__extract_quarter - , subq_7.booking__ds__extract_month - , subq_7.booking__ds__extract_day - , subq_7.booking__ds__extract_dow - , subq_7.booking__ds__extract_doy - , subq_7.booking__ds_partitioned__day - , subq_7.booking__ds_partitioned__week - , subq_7.booking__ds_partitioned__month - , subq_7.booking__ds_partitioned__quarter - , subq_7.booking__ds_partitioned__year - , subq_7.booking__ds_partitioned__extract_year - , subq_7.booking__ds_partitioned__extract_quarter - , subq_7.booking__ds_partitioned__extract_month - , subq_7.booking__ds_partitioned__extract_day - , subq_7.booking__ds_partitioned__extract_dow - , subq_7.booking__ds_partitioned__extract_doy - , subq_7.booking__paid_at__day - , subq_7.booking__paid_at__week - , subq_7.booking__paid_at__month - , subq_7.booking__paid_at__quarter - , subq_7.booking__paid_at__year - , subq_7.booking__paid_at__extract_year - , subq